UI: Unify filters clipboard of main window and filters menu

Previously, the filters window and the main window had separate
clipboards where copied filters would live. With previous changes to how
filters are copied in the main window, we can now easily unify the two.
This commit is contained in:
gxalpha 2024-06-07 22:43:01 +02:00
parent f402f7a091
commit 5a9f9af9ad
No known key found for this signature in database
GPG key ID: 470184116E317811
3 changed files with 7 additions and 22 deletions

View file

@ -945,7 +945,7 @@ void OBSBasicFilters::CustomContextMenu(const QPoint &pos, bool async)
}
QAction *pasteAction = new QAction(QTStr("Paste"));
pasteAction->setEnabled(main->copyFilter);
pasteAction->setEnabled(!main->filtersClipboard.empty());
connect(pasteAction, &QAction::triggered, this,
&OBSBasicFilters::PasteFilter);
pasteAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_V));
@ -1165,26 +1165,13 @@ void OBSBasicFilters::CopyFilter()
else
filter = GetFilter(ui->effectFilters->currentRow(), false);
main->copyFilter = OBSGetWeakRef(filter);
main->filtersClipboard.clear();
main->filtersClipboard.push_back(OBSGetWeakRef(filter));
}
void OBSBasicFilters::PasteFilter()
{
OBSSource filter = OBSGetStrongRef(main->copyFilter);
if (!filter)
return;
OBSDataArrayAutoRelease undo_array = obs_source_backup_filters(source);
obs_source_copy_single_filter(source, filter);
OBSDataArrayAutoRelease redo_array = obs_source_backup_filters(source);
const char *filterName = obs_source_get_name(filter);
const char *sourceName = obs_source_get_name(source);
QString text =
QTStr("Undo.Filters.Paste.Single").arg(filterName, sourceName);
main->CreateFilterPasteUndoRedoAction(text, source, undo_array,
redo_array);
main->SourcePasteFilters(source);
}
void OBSBasicFilters::delete_filter(OBSSource filter)

View file

@ -5104,7 +5104,6 @@ void OBSBasic::ClearSceneData()
clipboard.clear();
filtersClipboard.clear();
copyFilter = nullptr;
auto cb = [](void *, obs_source_t *source) {
obs_source_remove(source);

View file

@ -245,7 +245,6 @@ private:
ContextBarSize contextBarSize = ContextBarSize_Normal;
std::deque<SourceCopyInfo> clipboard;
std::vector<OBSWeakSource> filtersClipboard;
bool copyVisible = true;
obs_transform_info copiedTransformInfo;
obs_sceneitem_crop copiedCropInfo;
@ -807,8 +806,6 @@ private slots:
void on_actionPasteFilters_triggered();
void AudioMixerCopyFilters();
void AudioMixerPasteFilters();
void SourceCopyFilters(OBSSource source);
void SourcePasteFilters(OBSSource dstSource);
void ColorChange();
@ -1016,7 +1013,9 @@ public:
QIcon GetGroupIcon() const;
QIcon GetSceneIcon() const;
OBSWeakSource copyFilter;
std::vector<OBSWeakSource> filtersClipboard;
void SourceCopyFilters(OBSSource source);
void SourcePasteFilters(OBSSource dstSource);
void ShowStatusBarMessage(const QString &message);