Browse Source

UI: Force current scene when using undo/redo

The undo/redo functions are setting the current scene. Everytime
it would do this, it would actually transition to the scene.
This forces the current scene, so it fixes a bug where the
transition would be grayed out when undoing/redoing.
Clayton Groeneveld 4 years ago
parent
commit
7dfd36f9e8

+ 1 - 1
UI/context-bar-controls.cpp

@@ -62,7 +62,7 @@ void SourceToolbar::SetUndoProperties(obs_source_t *source)
 
 		obs_source_t *scene_source =
 			obs_get_source_by_name(scene_name.c_str());
-		main->SetCurrentScene(scene_source);
+		main->SetCurrentScene(scene_source, true);
 		obs_source_release(scene_source);
 
 		obs_data_release(settings);

+ 2 - 2
UI/source-tree.cpp

@@ -413,7 +413,7 @@ void SourceTreeItem::ExitEditMode(bool save)
 
 		obs_source_t *scene_source =
 			obs_get_source_by_name(scene_name.c_str());
-		main->SetCurrentScene(scene_source);
+		main->SetCurrentScene(scene_source, true);
 		obs_source_release(scene_source);
 	};
 
@@ -424,7 +424,7 @@ void SourceTreeItem::ExitEditMode(bool save)
 
 		obs_source_t *scene_source =
 			obs_get_source_by_name(scene_name.c_str());
-		main->SetCurrentScene(scene_source);
+		main->SetCurrentScene(scene_source, true);
 		obs_source_release(scene_source);
 	};
 

+ 6 - 6
UI/window-basic-filters.cpp

@@ -575,7 +575,7 @@ void OBSBasicFilters::AddNewFilter(const char *id)
 			obs_source_t *ssource =
 				obs_get_source_by_name(scene_name.c_str());
 			reinterpret_cast<OBSBasic *>(App()->GetMainWindow())
-				->SetCurrentScene(ssource);
+				->SetCurrentScene(ssource, true);
 			obs_source_release(ssource);
 
 			obs_data_t *dat =
@@ -599,7 +599,7 @@ void OBSBasicFilters::AddNewFilter(const char *id)
 			obs_source_t *ssource =
 				obs_get_source_by_name(scene_name.c_str());
 			reinterpret_cast<OBSBasic *>(App()->GetMainWindow())
-				->SetCurrentScene(ssource);
+				->SetCurrentScene(ssource, true);
 			obs_source_release(ssource);
 
 			obs_data_t *dat =
@@ -829,7 +829,7 @@ void OBSBasicFilters::on_removeEffectFilter_clicked()
 					scene_name.c_str());
 				reinterpret_cast<OBSBasic *>(
 					App()->GetMainWindow())
-					->SetCurrentScene(ssource);
+					->SetCurrentScene(ssource, true);
 				obs_source_release(ssource);
 
 				obs_data_t *dat =
@@ -854,7 +854,7 @@ void OBSBasicFilters::on_removeEffectFilter_clicked()
 					scene_name.c_str());
 				reinterpret_cast<OBSBasic *>(
 					App()->GetMainWindow())
-					->SetCurrentScene(ssource);
+					->SetCurrentScene(ssource, true);
 				obs_source_release(ssource);
 
 				obs_data_t *dat =
@@ -1134,7 +1134,7 @@ void OBSBasicFilters::FilterNameEdited(QWidget *editor, QListWidget *list)
 			obs_source_t *ssource =
 				obs_get_source_by_name(scene_name.c_str());
 			reinterpret_cast<OBSBasic *>(App()->GetMainWindow())
-				->SetCurrentScene(ssource);
+				->SetCurrentScene(ssource, true);
 			obs_source_release(ssource);
 
 			obs_source_t *source =
@@ -1151,7 +1151,7 @@ void OBSBasicFilters::FilterNameEdited(QWidget *editor, QListWidget *list)
 			obs_source_t *ssource =
 				obs_get_source_by_name(scene_name.c_str());
 			reinterpret_cast<OBSBasic *>(App()->GetMainWindow())
-				->SetCurrentScene(ssource);
+				->SetCurrentScene(ssource, true);
 			obs_source_release(ssource);
 
 			obs_source_t *source =

+ 3 - 3
UI/window-basic-main.cpp

@@ -3739,7 +3739,7 @@ void OBSBasic::RemoveSelectedScene()
 
 		obs_source_t *scene_source = sources.back();
 		OBSScene scene = obs_scene_from_source(scene_source);
-		SetCurrentScene(scene);
+		SetCurrentScene(scene, true);
 
 		/* set original index in list box */
 		ui->scenes->blockSignals(true);
@@ -4927,7 +4927,7 @@ void OBSBasic::on_actionAddScene_triggered()
 		auto redo_fn = [this](const std::string &data) {
 			obs_scene_t *scene = obs_scene_create(data.c_str());
 			obs_source_t *source = obs_scene_get_source(scene);
-			SetCurrentScene(source);
+			SetCurrentScene(source, true);
 			obs_scene_release(scene);
 		};
 		undo_s.add_action(QTStr("Undo.Add").arg(QString(name.c_str())),
@@ -7155,7 +7155,7 @@ void undo_redo(const std::string &data)
 	obs_source_t *source =
 		obs_get_source_by_name(obs_data_get_string(dat, "scene_name"));
 	reinterpret_cast<OBSBasic *>(App()->GetMainWindow())
-		->SetCurrentScene(source);
+		->SetCurrentScene(source, true);
 	obs_source_release(source);
 	obs_data_release(dat);
 

+ 1 - 1
UI/window-basic-preview.cpp

@@ -730,7 +730,7 @@ void OBSBasicPreview::mouseReleaseEvent(QMouseEvent *event)
 		obs_source_t *source = obs_get_source_by_name(
 			obs_data_get_string(dat, "scene_name"));
 		reinterpret_cast<OBSBasic *>(App()->GetMainWindow())
-			->SetCurrentScene(source);
+			->SetCurrentScene(source, true);
 		obs_source_release(source);
 		obs_data_release(dat);
 

+ 1 - 1
UI/window-basic-properties.cpp

@@ -375,7 +375,7 @@ void OBSBasicProperties::on_buttonBox_clicked(QAbstractButton *button)
 			obs_source_t *scene_source =
 				obs_get_source_by_name(scene_name.c_str());
 
-			OBSBasic::Get()->SetCurrentScene(source);
+			OBSBasic::Get()->SetCurrentScene(source, true);
 
 			obs_source_release(scene_source);
 

+ 2 - 2
UI/window-basic-source-select.cpp

@@ -252,7 +252,7 @@ void OBSBasicSourceSelect::on_buttonBox_accepted()
 
 			obs_source_t *scene_source =
 				obs_get_source_by_name(scene_name.c_str());
-			main->SetCurrentScene(scene_source);
+			main->SetCurrentScene(scene_source, true);
 			obs_source_release(scene_source);
 
 			main->RefreshSources(main->GetCurrentScene());
@@ -282,7 +282,7 @@ void OBSBasicSourceSelect::on_buttonBox_accepted()
 
 			obs_source_t *scene_source =
 				obs_get_source_by_name(scene_name.c_str());
-			main->SetCurrentScene(scene_source);
+			main->SetCurrentScene(scene_source, true);
 			obs_source_release(scene_source);
 
 			main->RefreshSources(main->GetCurrentScene());

+ 1 - 1
UI/window-basic-transform.cpp

@@ -92,7 +92,7 @@ OBSBasicTransform::~OBSBasicTransform()
 		obs_source_t *source = obs_get_source_by_name(
 			obs_data_get_string(dat, "scene_name"));
 		reinterpret_cast<OBSBasic *>(App()->GetMainWindow())
-			->SetCurrentScene(source);
+			->SetCurrentScene(source, true);
 		obs_source_release(source);
 		obs_data_release(dat);
 		obs_scene_load_transform_states(data.c_str());