UI: Migrate undo/redo to using UUIDs

This commit is contained in:
derrod
2023-06-28 11:04:56 -07:00
committed by Lain
parent 0cb812251c
commit 67f7712d83
11 changed files with 193 additions and 196 deletions
+8 -8
View File
@@ -40,7 +40,7 @@ void SourceToolbar::SaveOldProperties(obs_source_t *source)
OBSDataAutoRelease oldSettings = obs_source_get_settings(source);
obs_data_apply(oldData, oldSettings);
obs_data_set_string(oldData, "undo_sname", obs_source_get_name(source));
obs_data_set_string(oldData, "undo_suuid", obs_source_get_uuid(source));
}
void SourceToolbar::SetUndoProperties(obs_source_t *source, bool repeatable)
@@ -55,17 +55,17 @@ void SourceToolbar::SetUndoProperties(obs_source_t *source, bool repeatable)
OBSSource currentSceneSource = main->GetCurrentSceneSource();
if (!currentSceneSource)
return;
std::string scene_name = obs_source_get_name(currentSceneSource);
auto undo_redo = [scene_name = std::move(scene_name),
std::string scene_uuid = obs_source_get_uuid(currentSceneSource);
auto undo_redo = [scene_uuid = std::move(scene_uuid),
main](const std::string &data) {
OBSDataAutoRelease settings =
obs_data_create_from_json(data.c_str());
OBSSourceAutoRelease source = obs_get_source_by_name(
obs_data_get_string(settings, "undo_sname"));
OBSSourceAutoRelease source = obs_get_source_by_uuid(
obs_data_get_string(settings, "undo_suuid"));
obs_source_reset_settings(source, settings);
OBSSourceAutoRelease scene_source =
obs_get_source_by_name(scene_name.c_str());
obs_get_source_by_uuid(scene_uuid.c_str());
main->SetCurrentScene(scene_source.Get(), true);
main->UpdateContextBar();
@@ -74,8 +74,8 @@ void SourceToolbar::SetUndoProperties(obs_source_t *source, bool repeatable)
OBSDataAutoRelease new_settings = obs_data_create();
OBSDataAutoRelease curr_settings = obs_source_get_settings(source);
obs_data_apply(new_settings, curr_settings);
obs_data_set_string(new_settings, "undo_sname",
obs_source_get_name(source));
obs_data_set_string(new_settings, "undo_suuid",
obs_source_get_uuid(source));
std::string undo_data(obs_data_get_json(oldData));
std::string redo_data(obs_data_get_json(new_settings));