From 777d9eb7877c0d7ca667aa9e59f6f594daca7b21 Mon Sep 17 00:00:00 2001 From: Clayton Groeneveld Date: Sat, 13 Jun 2020 21:00:55 -0500 Subject: [PATCH] UI: Auto update projector settings --- UI/window-basic-main.cpp | 12 ++++++++++++ UI/window-basic-main.hpp | 3 +++ UI/window-basic-settings.cpp | 17 +++++++++++++---- UI/window-projector.cpp | 3 +++ UI/window-projector.hpp | 2 +- 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 5164d3519..5419ecd0c 100644 --- a/UI/window-basic-main.cpp +++ b/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); +} diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index b612be047..8874d2cfb 100644 --- a/UI/window-basic-main.hpp +++ b/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(); diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 472467294..f33cf6819 100644 --- a/UI/window-basic-settings.cpp +++ b/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", diff --git a/UI/window-projector.cpp b/UI/window-projector.cpp index ffb9ea076..7224e5b89 100644 --- a/UI/window-projector.cpp +++ b/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"); diff --git a/UI/window-projector.hpp b/UI/window-projector.hpp index c1fbb6557..0831e9187 100644 --- a/UI/window-projector.hpp +++ b/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(); };