ソースを参照

UI: Fix undo delete scene that is used as source

Exeldro 4 年 前
コミット
08d9069201
1 ファイル変更18 行追加0 行削除
  1. 18 0
      UI/window-basic-main.cpp

+ 18 - 0
UI/window-basic-main.cpp

@@ -3737,6 +3737,24 @@ void OBSBasic::RemoveSelectedScene()
 	obs_data_array_push_back(array, scene_data);
 	obs_data_release(scene_data);
 
+	/* ----------------------------------------------- */
+	/* save all scenes and groups the scene is used in */
+
+	for (int i = 0; i < ui->scenes->count(); i++) {
+		QListWidgetItem *widget_item = ui->scenes->item(i);
+		auto item_scene = GetOBSRef<OBSScene>(widget_item);
+		if (scene == item_scene)
+			continue;
+		auto *item = obs_scene_find_source_recursive(
+			item_scene, obs_source_get_name(source));
+		if (item) {
+			scene_data = obs_save_source(obs_scene_get_source(
+				obs_sceneitem_get_scene(item)));
+			obs_data_array_push_back(array, scene_data);
+			obs_data_release(scene_data);
+		}
+	}
+
 	/* --------------------------- */
 	/* undo/redo                   */