diff --git a/src/advanced-scene-switcher.cpp b/src/advanced-scene-switcher.cpp index 90bb1277..92735351 100644 --- a/src/advanced-scene-switcher.cpp +++ b/src/advanced-scene-switcher.cpp @@ -743,6 +743,11 @@ void OpenSettingsWindow() } } +QWidget *GetSettingsWindow() +{ + return SettingsWindowIsOpened() ? AdvSceneSwitcher::window : nullptr; +} + void SetupConnectionManager(); void SetupWebsocketHelpers(); diff --git a/src/advanced-scene-switcher.hpp b/src/advanced-scene-switcher.hpp index 71f50f04..f4b2d4d9 100644 --- a/src/advanced-scene-switcher.hpp +++ b/src/advanced-scene-switcher.hpp @@ -412,5 +412,6 @@ public slots: }; void OpenSettingsWindow(); +QWidget *GetSettingsWindow(); } // namespace advss diff --git a/src/utils/non-modal-dialog.cpp b/src/utils/non-modal-dialog.cpp index 908860b3..f11a009d 100644 --- a/src/utils/non-modal-dialog.cpp +++ b/src/utils/non-modal-dialog.cpp @@ -9,6 +9,8 @@ namespace advss { +QWidget *GetSettingsWindow(); + NonModalMessageDialog::NonModalMessageDialog(const QString &message, bool question) : NonModalMessageDialog(message, question ? Type::QUESTION : Type::INFO) @@ -16,7 +18,10 @@ NonModalMessageDialog::NonModalMessageDialog(const QString &message, } NonModalMessageDialog::NonModalMessageDialog(const QString &message, Type type) - : QDialog(static_cast(obs_frontend_get_main_window())), + : QDialog(GetSettingsWindow() + ? GetSettingsWindow() + : static_cast( + obs_frontend_get_main_window())), _type(type), _answer(QMessageBox::No) { diff --git a/src/utils/utility.cpp b/src/utils/utility.cpp index e2874293..5f841515 100644 --- a/src/utils/utility.cpp +++ b/src/utils/utility.cpp @@ -521,6 +521,8 @@ int GetSceneItemCount(const OBSWeakSource &sceneWeakSource) return count; } +QWidget *GetSettingsWindow(); + bool DisplayMessage(const QString &msg, bool question, bool modal) { if (!modal) { @@ -529,8 +531,10 @@ bool DisplayMessage(const QString &msg, bool question, bool modal) return (answer == QMessageBox::Yes); } else if (question && modal) { auto answer = QMessageBox::question( - static_cast( - obs_frontend_get_main_window()), + GetSettingsWindow() + ? GetSettingsWindow() + : static_cast( + obs_frontend_get_main_window()), obs_module_text("AdvSceneSwitcher.windowTitle"), msg, QMessageBox::Yes | QMessageBox::No); return answer == QMessageBox::Yes;