diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index d7aa40bbf..03aee3b52 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -309,6 +309,8 @@ Undo.MoveUp="Move '%1' up in '%2'" Undo.MoveDown="Move '%1' down in '%2'" Undo.MoveToTop="Move '%1' to top in '%2'" Undo.MoveToBottom="Move '%1' to bottom in '%2'" +Undo.PasteSource="Paste Source(s) in '%1'" +Undo.PasteSourceRef="Paste Source Reference(s) in '%1'" # transition name dialog TransitionNameDlg.Text="Please enter the name of the transition" diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 6c6d93fdd..f5d7eeb3a 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -8385,6 +8385,11 @@ void OBSBasic::on_actionCopySource_triggered() void OBSBasic::on_actionPasteRef_triggered() { + OBSSource scene_source = GetCurrentSceneSource(); + OBSData undo_data = BackupScene(scene_source); + + undo_s.push_disabled(); + for (auto ©String : copyStrings) { /* do not allow duplicate refs of the same group in the same scene */ OBSScene scene = GetCurrentScene(); @@ -8395,15 +8400,38 @@ void OBSBasic::on_actionPasteRef_triggered() false); on_actionPasteTransform_triggered(); } + + undo_s.pop_disabled(); + + QString action_name = QTStr("Undo.PasteSourceRef"); + const char *scene_name = obs_source_get_name(scene_source); + + OBSData redo_data = BackupScene(scene_source); + CreateSceneUndoRedoAction(action_name.arg(scene_name), undo_data, + redo_data); } void OBSBasic::on_actionPasteDup_triggered() { + OBSSource scene_source = GetCurrentSceneSource(); + OBSData undo_data = BackupScene(scene_source); + + undo_s.push_disabled(); + for (auto ©String : copyStrings) { OBSBasicSourceSelect::SourcePaste(copyString, copyVisible, true); on_actionPasteTransform_triggered(); } + + undo_s.pop_disabled(); + + QString action_name = QTStr("Undo.PasteSource"); + const char *scene_name = obs_source_get_name(scene_source); + + OBSData redo_data = BackupScene(scene_source); + CreateSceneUndoRedoAction(action_name.arg(scene_name), undo_data, + redo_data); } void OBSBasic::AudioMixerCopyFilters()