diff --git a/UI/context-bar-controls.cpp b/UI/context-bar-controls.cpp index dc0d357f6..999bfcb4f 100644 --- a/UI/context-bar-controls.cpp +++ b/UI/context-bar-controls.cpp @@ -84,7 +84,7 @@ void SourceToolbar::SetUndoProperties(obs_source_t *source) main->undo_s.add_action( QTStr("Undo.Properties") .arg(obs_source_get_name(source)), - undo_redo, undo_redo, undo_data, redo_data, nullptr); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(new_settings); obs_data_release(curr_settings); diff --git a/UI/source-tree.cpp b/UI/source-tree.cpp index 48f71c204..e6fad3670 100644 --- a/UI/source-tree.cpp +++ b/UI/source-tree.cpp @@ -154,7 +154,7 @@ SourceTreeItem::SourceTreeItem(SourceTree *tree_, OBSSceneItem sceneitem_) OBSBasic *main = OBSBasic::Get(); main->undo_s.add_action(str, undo_redo, undo_redo, checked ? "0" : "1", - checked ? "1" : "0", nullptr); + checked ? "1" : "0"); SignalBlocker sourcesSignalBlocker(this); obs_sceneitem_set_visible(sceneitem, checked); @@ -454,7 +454,7 @@ void SourceTreeItem::ExitEditMode(bool save) }; main->undo_s.add_action(QTStr("Undo.Rename").arg(newName.c_str()), undo, - redo, newName, prevName, NULL); + redo, newName, prevName); obs_source_set_name(source, newName.c_str()); label->setText(QT_UTF8(newName.c_str())); diff --git a/UI/undo-stack-obs.cpp b/UI/undo-stack-obs.cpp index 6f044f542..fb0862bc1 100644 --- a/UI/undo-stack-obs.cpp +++ b/UI/undo-stack-obs.cpp @@ -6,21 +6,8 @@ undo_stack::undo_stack(ui_ptr ui) : ui(ui) {} -void undo_stack::release() -{ - for (auto f : undo_items) - if (f.d) - f.d(true); - - for (auto f : redo_items) - if (f.d) - f.d(false); -} - void undo_stack::clear() { - release(); - undo_items.clear(); redo_items.clear(); @@ -33,16 +20,14 @@ void undo_stack::clear() void undo_stack::add_action(const QString &name, undo_redo_cb undo, undo_redo_cb redo, std::string undo_data, - std::string redo_data, func d) + std::string redo_data) { while (undo_items.size() >= MAX_STACK_SIZE) { undo_redo_t item = undo_items.back(); - if (item.d) - item.d(true); undo_items.pop_back(); } - undo_redo_t n = {name, undo_data, redo_data, undo, redo, d}; + undo_redo_t n = {name, undo_data, redo_data, undo, redo}; undo_items.push_front(n); clear_redo(); @@ -116,9 +101,5 @@ void undo_stack::disable_undo_redo() void undo_stack::clear_redo() { - for (auto f : redo_items) - if (f.d) - f.d(false); - redo_items.clear(); } diff --git a/UI/undo-stack-obs.hpp b/UI/undo-stack-obs.hpp index fe476737b..936de1414 100644 --- a/UI/undo-stack-obs.hpp +++ b/UI/undo-stack-obs.hpp @@ -20,7 +20,6 @@ class undo_stack { std::string redo_data; undo_redo_cb undo; undo_redo_cb redo; - func d; }; ui_ptr ui; @@ -36,11 +35,10 @@ public: void enable_undo_redo(); void disable_undo_redo(); - void release(); void clear(); void add_action(const QString &name, undo_redo_cb undo, undo_redo_cb redo, std::string undo_data, - std::string redo_data, func d); + std::string redo_data); void undo(); void redo(); }; diff --git a/UI/window-basic-filters.cpp b/UI/window-basic-filters.cpp index 81774b000..9847d6ac7 100644 --- a/UI/window-basic-filters.cpp +++ b/UI/window-basic-filters.cpp @@ -258,7 +258,7 @@ void OBSBasicFilters::UpdatePropertiesView(int row, bool async) std::string redo_data = obs_data_get_json(redo_wrapper); main->undo_s.add_action(QTStr("Undo.Filters").arg(name.c_str()), undo_redo, undo_redo, undo_data, - redo_data, NULL); + redo_data); obs_data_release(redo_wrapper); obs_data_release(undo_wrapper); @@ -621,7 +621,7 @@ void OBSBasicFilters::AddNewFilter(const char *id) std::string undo_data(obs_data_get_json(wrapper)); std::string redo_data(obs_data_get_json(rwrapper)); main->undo_s.add_action(QTStr("Undo.Add").arg(name.c_str()), - undo, redo, undo_data, redo_data, NULL); + undo, redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -877,7 +877,7 @@ void OBSBasicFilters::on_removeEffectFilter_clicked() main->undo_s.add_action( QTStr("Undo.Delete") .arg(obs_source_get_name(filter)), - undo, redo, undo_data, redo_data, NULL); + undo, redo, undo_data, redo_data); obs_source_filter_remove(source, filter); obs_data_release(wrapper); @@ -1166,7 +1166,7 @@ void OBSBasicFilters::FilterNameEdited(QWidget *editor, QListWidget *list) std::string undo_data(sourceName); std::string redo_data(sourceName); main->undo_s.add_action(QTStr("Undo.Rename").arg(name.c_str()), - undo, redo, undo_data, redo_data, NULL); + undo, redo, undo_data, redo_data); } listItem->setText(QString()); diff --git a/UI/window-basic-main-scene-collections.cpp b/UI/window-basic-main-scene-collections.cpp index 551cb969e..5c051e6f6 100644 --- a/UI/window-basic-main-scene-collections.cpp +++ b/UI/window-basic-main-scene-collections.cpp @@ -199,7 +199,7 @@ bool OBSBasic::AddSceneCollection(bool create_new, const QString &qname) }; undo_s.add_action(QTStr("Undo.Add").arg(name.c_str()), undo, redo, file, - "", NULL); + ""); blog(LOG_INFO, "Added scene collection '%s' (%s, %s.json)", name.c_str(), create_new ? "clean" : "duplicate", file.c_str()); @@ -376,7 +376,7 @@ void OBSBasic::on_actionRenameSceneCollection_triggered() RefreshSceneCollections(); undo_s.add_action(QTStr("Undo.Rename").arg(name.c_str()), undo, redo, - "", "", NULL); + "", ""); if (api) { api->on_event(OBS_FRONTEND_EVENT_SCENE_COLLECTION_LIST_CHANGED); @@ -450,7 +450,7 @@ void OBSBasic::on_actionRemoveSceneCollection_triggered() std::string undo_data = std::string(obs_data_get_json(data)); undo_s.add_action(QTStr("Undo.Delete").arg(oldName.c_str()), undo, redo, - undo_data, "", NULL); + undo_data, ""); obs_data_release(data); os_unlink(oldFile.c_str()); diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp index bebcbac0c..b93138c64 100644 --- a/UI/window-basic-main-transitions.cpp +++ b/UI/window-basic-main-transitions.cpp @@ -1236,8 +1236,7 @@ QMenu *OBSBasic::CreateVisibilityTransitionMenu(bool visible) .arg(obs_source_get_name( obs_sceneitem_get_source( sceneItem))), - undo_redo, undo_redo, undo_data, redo_data, - NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(newTransitionData); obs_data_release(oldTransitionData); }; diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 5be99f689..2b2ae83e7 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -3663,8 +3663,7 @@ void OBSBasic::DuplicateSelectedScene() QTStr("Undo.Scene.Duplicate") .arg(obs_source_get_name(source)), undo, redo, obs_source_get_name(source), - obs_source_get_name(obs_scene_get_source(curScene)), - NULL); + obs_source_get_name(obs_scene_get_source(curScene))); obs_scene_release(scene); @@ -3765,7 +3764,7 @@ void OBSBasic::RemoveSelectedScene() obs_data_set_int(data, "index", ui->scenes->currentRow()); undo_s.add_action("Delete Scene", undo, redo, obs_data_get_json(data), - obs_source_get_name(source), NULL); + obs_source_get_name(source)); obs_data_array_release(array); obs_data_release(data); @@ -4468,7 +4467,6 @@ void OBSBasic::closeEvent(QCloseEvent *event) /* Clear all scene data (dialogs, widgets, widget sub-items, scenes, * sources, etc) so that all references are released before shutdown */ - undo_s.release(); ClearSceneData(); App()->quit(); @@ -4672,8 +4670,7 @@ void OBSBasic::on_actionAdvAudioProperties_triggered() if (undo_data.compare(redo_data) != 0) undo_s.add_action(QTStr("Undo.Audio"), undo_redo, - undo_redo, undo_data, redo_data, - NULL); + undo_redo, undo_data, redo_data); obs_data_release(wrapper); }); @@ -4917,7 +4914,7 @@ void OBSBasic::on_actionAddScene_triggered() obs_scene_release(scene); }; undo_s.add_action(QTStr("Undo.Add").arg(QString(name.c_str())), - undo_fn, redo_fn, name, name, NULL); + undo_fn, redo_fn, name, name); obs_scene_t *scene = obs_scene_create(name.c_str()); source = obs_scene_get_source(scene); @@ -5552,7 +5549,7 @@ void OBSBasic::CreateSceneUndoRedoAction(const QString &action_name, const char *redo_json = obs_data_get_last_json(redo_data); undo_s.add_action(action_name, undo_redo, undo_redo, undo_json, - redo_json, nullptr); + redo_json); } void OBSBasic::on_actionRemoveSource_triggered() @@ -5893,7 +5890,7 @@ static void RenameListItem(OBSBasic *parent, QListWidget *listWidget, std::string redo_data(prevName); parent->undo_s.add_action( QTStr("Undo.Rename").arg(name.c_str()), undo, redo, - undo_data, redo_data, NULL); + undo_data, redo_data); listItem->setText(QT_UTF8(name.c_str())); obs_source_set_name(source, name.c_str()); @@ -7183,7 +7180,7 @@ void OBSBasic::on_actionPasteTransform_triggered() undo_s.add_action( QTStr("Undo.Transform.Paste") .arg(obs_source_get_name(GetCurrentSceneSource())), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7233,7 +7230,7 @@ void OBSBasic::on_actionResetTransform_triggered() undo_s.add_action( QTStr("Undo.Transform.Reset") .arg(obs_source_get_name(obs_scene_get_source(scene))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7326,7 +7323,7 @@ void OBSBasic::on_actionRotate90CW_triggered() undo_s.add_action(QTStr("Undo.Transform.Rotate") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7346,7 +7343,7 @@ void OBSBasic::on_actionRotate90CCW_triggered() undo_s.add_action(QTStr("Undo.Transform.Rotate") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7366,7 +7363,7 @@ void OBSBasic::on_actionRotate180_triggered() undo_s.add_action(QTStr("Undo.Transform.Rotate") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7416,7 +7413,7 @@ void OBSBasic::on_actionFlipHorizontal_triggered() undo_s.add_action(QTStr("Undo.Transform.HFlip") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7438,7 +7435,7 @@ void OBSBasic::on_actionFlipVertical_triggered() undo_s.add_action(QTStr("Undo.Transform.VFlip") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7493,7 +7490,7 @@ void OBSBasic::on_actionFitToScreen_triggered() undo_s.add_action(QTStr("Undo.Transform.FitToScreen") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7514,7 +7511,7 @@ void OBSBasic::on_actionStretchToScreen_triggered() undo_s.add_action(QTStr("Undo.Transform.StretchToScreen") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7589,7 +7586,7 @@ void OBSBasic::on_actionCenterToScreen_triggered() undo_s.add_action(QTStr("Undo.Transform.Center") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7609,7 +7606,7 @@ void OBSBasic::on_actionVerticalCenter_triggered() undo_s.add_action(QTStr("Undo.Transform.VCenter") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7629,7 +7626,7 @@ void OBSBasic::on_actionHorizontalCenter_triggered() undo_s.add_action(QTStr("Undo.Transform.HCenter") .arg(obs_source_get_name(obs_scene_get_source( GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); obs_data_release(rwrapper); @@ -7744,7 +7741,7 @@ void OBSBasic::Nudge(int dist, MoveDir dir) .arg(obs_source_get_name( GetCurrentSceneSource())), undo_redo, undo_redo, undo_data, - redo_data, NULL); + redo_data); recent_nudge = false; obs_data_release(rwrapper); diff --git a/UI/window-basic-preview.cpp b/UI/window-basic-preview.cpp index 30ab00a2f..579b34dbb 100644 --- a/UI/window-basic-preview.cpp +++ b/UI/window-basic-preview.cpp @@ -745,8 +745,7 @@ void OBSBasicPreview::mouseReleaseEvent(QMouseEvent *event) QTStr("Undo.Transform") .arg(obs_source_get_name( main->GetCurrentSceneSource())), - undo_redo, undo_redo, undo_data, redo_data, - NULL); + undo_redo, undo_redo, undo_data, redo_data); } if (wrapper) diff --git a/UI/window-basic-properties.cpp b/UI/window-basic-properties.cpp index a616b4c00..a2cfdedfd 100644 --- a/UI/window-basic-properties.cpp +++ b/UI/window-basic-properties.cpp @@ -398,8 +398,7 @@ void OBSBasicProperties::on_buttonBox_clicked(QAbstractButton *button) main->undo_s.add_action( QTStr("Undo.Properties") .arg(obs_source_get_name(source)), - undo_redo, undo_redo, undo_data, redo_data, - NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(new_settings); obs_data_release(curr_settings); diff --git a/UI/window-basic-source-select.cpp b/UI/window-basic-source-select.cpp index 174bdb934..89e1f264a 100644 --- a/UI/window-basic-source-select.cpp +++ b/UI/window-basic-source-select.cpp @@ -292,8 +292,7 @@ void OBSBasicSourceSelect::on_buttonBox_accepted() undo_s.add_action(QTStr("Undo.Add").arg(ui->sourceName->text()), undo, redo, std::string(obs_source_get_name(newSource)), - std::string(obs_data_get_json(wrapper)), - NULL); + std::string(obs_data_get_json(wrapper))); obs_data_release(wrapper); obs_sceneitem_release(item); } diff --git a/UI/window-basic-transform.cpp b/UI/window-basic-transform.cpp index 47f2bb8d7..7ec4b1d75 100644 --- a/UI/window-basic-transform.cpp +++ b/UI/window-basic-transform.cpp @@ -105,7 +105,7 @@ OBSBasicTransform::~OBSBasicTransform() QTStr("Undo.Transform") .arg(obs_source_get_name(obs_scene_get_source( main->GetCurrentScene()))), - undo_redo, undo_redo, undo_data, redo_data, NULL); + undo_redo, undo_redo, undo_data, redo_data); obs_data_release(wrapper); }