From 94eb7b1348bffd9ec00ea5ae8f37d2e4a0a31e20 Mon Sep 17 00:00:00 2001 From: Clayton Groeneveld Date: Tue, 5 Mar 2019 17:16:16 -0600 Subject: [PATCH] UI: Add (Do not show again) checkbox to dock closing warning Closes obsproject/obs-studio#1717 --- UI/data/locale/en-US.ini | 1 + UI/window-dock.cpp | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index e70b1b92b..ba3deb9ca 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -85,6 +85,7 @@ StudioMode.Program="Program" ShowInMultiview="Show in Multiview" VerticalLayout="Vertical Layout" Group="Group" +DoNotShowAgain="Do not show again" # warning if program already open AlreadyRunning.Title="OBS is already running" diff --git a/UI/window-dock.cpp b/UI/window-dock.cpp index 365c221f3..840c4f7f7 100644 --- a/UI/window-dock.cpp +++ b/UI/window-dock.cpp @@ -2,14 +2,28 @@ #include "obs-app.hpp" #include +#include void OBSDock::closeEvent(QCloseEvent *event) { auto msgBox = [] () { - QMessageBox::information(App()->GetMainWindow(), - QTStr("DockCloseWarning.Title"), - QTStr("DockCloseWarning.Text")); + QMessageBox msgbox(App()->GetMainWindow()); + msgbox.setWindowTitle(QTStr("DockCloseWarning.Title")); + msgbox.setText(QTStr("DockCloseWarning.Text")); + msgbox.setIcon(QMessageBox::Icon::Information); + msgbox.addButton(QMessageBox::Ok); + + QCheckBox *cb = new QCheckBox(QTStr("DoNotShowAgain")); + msgbox.setCheckBox(cb); + + msgbox.exec(); + + if (cb->isChecked()) { + config_set_bool(App()->GlobalConfig(), "General", + "WarnedAboutClosingDocks", true); + config_save_safe(App()->GlobalConfig(), "tmp", nullptr); + } }; bool warned = config_get_bool(App()->GlobalConfig(), "General", @@ -18,9 +32,6 @@ void OBSDock::closeEvent(QCloseEvent *event) QMetaObject::invokeMethod(App(), "Exec", Qt::QueuedConnection, Q_ARG(VoidFunc, msgBox)); - config_set_bool(App()->GlobalConfig(), "General", - "WarnedAboutClosingDocks", true); - config_save_safe(App()->GlobalConfig(), "tmp", nullptr); } QDockWidget::closeEvent(event);