Browse Source

UI: Auto update projector settings

Clayton Groeneveld 5 years ago
parent
commit
777d9eb787

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

@@ -7965,3 +7965,15 @@ void OBSBasic::on_customContextMenuRequested(const QPoint &pos)
 	if (!className || strstr(className, "Dock") != nullptr)
 		ui->viewMenuDocks->exec(mapToGlobal(pos));
 }
+
+void OBSBasic::UpdateProjectorHideCursor()
+{
+	for (size_t i = 0; i < projectors.size(); i++)
+		projectors[i]->SetHideCursor();
+}
+
+void OBSBasic::UpdateProjectorAlwaysOnTop(bool top)
+{
+	for (size_t i = 0; i < projectors.size(); i++)
+		SetAlwaysOnTop(projectors[i], top);
+}

+ 3 - 0
UI/window-basic-main.hpp

@@ -525,6 +525,9 @@ private:
 	OBSSource GetOverrideTransition(OBSSource source);
 	int GetOverrideTransitionDuration(OBSSource source);
 
+	void UpdateProjectorHideCursor();
+	void UpdateProjectorAlwaysOnTop(bool top);
+
 public slots:
 	void DeferSaveBegin();
 	void DeferSaveEnd();

+ 13 - 4
UI/window-basic-settings.cpp

@@ -2900,11 +2900,20 @@ void OBSBasicSettings::SaveGeneralSettings()
 			"WarnBeforeStoppingRecord",
 			ui->warnBeforeRecordStop->isChecked());
 
-	config_set_bool(GetGlobalConfig(), "BasicWindow", "HideProjectorCursor",
-			ui->hideProjectorCursor->isChecked());
-	config_set_bool(GetGlobalConfig(), "BasicWindow",
-			"ProjectorAlwaysOnTop",
+	if (WidgetChanged(ui->hideProjectorCursor)) {
+		config_set_bool(GetGlobalConfig(), "BasicWindow",
+				"HideProjectorCursor",
+				ui->hideProjectorCursor->isChecked());
+		main->UpdateProjectorHideCursor();
+	}
+
+	if (WidgetChanged(ui->projectorAlwaysOnTop)) {
+		config_set_bool(GetGlobalConfig(), "BasicWindow",
+				"ProjectorAlwaysOnTop",
+				ui->projectorAlwaysOnTop->isChecked());
+		main->UpdateProjectorAlwaysOnTop(
 			ui->projectorAlwaysOnTop->isChecked());
+	}
 
 	if (WidgetChanged(ui->recordWhenStreaming))
 		config_set_bool(GetGlobalConfig(), "BasicWindow",

+ 3 - 0
UI/window-projector.cpp

@@ -173,6 +173,9 @@ void OBSProjector::SetMonitor(int monitor)
 
 void OBSProjector::SetHideCursor()
 {
+	if (savedMonitor == -1)
+		return;
+
 	bool hideCursor = config_get_bool(GetGlobalConfig(), "BasicWindow",
 					  "HideProjectorCursor");
 

+ 1 - 1
UI/window-projector.hpp

@@ -73,7 +73,6 @@ private:
 	void UpdateProjectorTitle(QString name);
 
 	QRect prevGeometry;
-	void SetHideCursor();
 	void SetMonitor(int monitor);
 
 private slots:
@@ -91,4 +90,5 @@ public:
 	int GetMonitor();
 	static void UpdateMultiviewProjectors();
 	void RenameProjector(QString oldName, QString newName);
+	void SetHideCursor();
 };