diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index bdcf0cb9b..3e09adb04 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -993,6 +993,7 @@ Basic.Settings.Audio.Disabled="Disabled" # basic mode 'advanced' settings Basic.Settings.Advanced="Advanced" +Basic.Settings.Advanced.General.ConfirmOnExit="Show active outputs warning on exit" Basic.Settings.Advanced.General.ProcessPriority="Process Priority" Basic.Settings.Advanced.General.ProcessPriority.High="High" Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Above Normal" diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui index a6ddad1ff..1a65e47eb 100644 --- a/UI/forms/OBSBasicSettings.ui +++ b/UI/forms/OBSBasicSettings.ui @@ -4800,6 +4800,13 @@ + + + + Basic.Settings.Advanced.General.ConfirmOnExit + + + @@ -5722,6 +5729,7 @@ fpsDenominator scrollArea processPriority + confirmOnExit renderer adapter colorFormat diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index 797c9528c..db3c13b41 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -419,6 +419,8 @@ bool OBSApp::InitGlobalConfigDefaults() config_set_default_bool(globalConfig, "General", "EnableAutoUpdates", true); + config_set_default_bool(globalConfig, "General", "ConfirmOnExit", true); + #if _WIN32 config_set_default_string(globalConfig, "Video", "Renderer", "Direct3D 11"); diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index eb412652d..f7a427935 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -4531,7 +4531,10 @@ void OBSBasic::closeEvent(QCloseEvent *event) "geometry", saveGeometry().toBase64().constData()); - if (outputHandler && outputHandler->Active()) { + bool confirmOnExit = + config_get_bool(GetGlobalConfig(), "General", "ConfirmOnExit"); + + if (confirmOnExit && outputHandler && outputHandler->Active()) { SetShowing(true); QMessageBox::StandardButton button = OBSMessageBox::question( diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index e41d7bbf5..e088a12f4 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -554,6 +554,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->reconnectRetryDelay, SCROLL_CHANGED, ADV_CHANGED); HookWidget(ui->reconnectMaxRetries, SCROLL_CHANGED, ADV_CHANGED); HookWidget(ui->processPriority, COMBO_CHANGED, ADV_CHANGED); + HookWidget(ui->confirmOnExit, CHECK_CHANGED, ADV_CHANGED); HookWidget(ui->bindToIP, COMBO_CHANGED, ADV_CHANGED); HookWidget(ui->enableNewSocketLoop, CHECK_CHANGED, ADV_CHANGED); HookWidget(ui->enableLowLatencyMode, CHECK_CHANGED, ADV_CHANGED); @@ -627,7 +628,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) delete ui->adapter; delete ui->processPriorityLabel; delete ui->processPriority; - delete ui->advancedGeneralGroupBox; delete ui->enableNewSocketLoop; delete ui->enableLowLatencyMode; #ifdef __linux__ @@ -643,7 +643,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) ui->adapter = nullptr; ui->processPriorityLabel = nullptr; ui->processPriority = nullptr; - ui->advancedGeneralGroupBox = nullptr; ui->enableNewSocketLoop = nullptr; ui->enableLowLatencyMode = nullptr; #ifdef __linux__ @@ -2512,6 +2511,10 @@ void OBSBasicSettings::LoadAdvancedSettings() bool dynBitrate = config_get_bool(main->Config(), "Output", "DynamicBitrate"); + bool confirmOnExit = + config_get_bool(GetGlobalConfig(), "General", "ConfirmOnExit"); + ui->confirmOnExit->setChecked(confirmOnExit); + loading = true; LoadRendererList(); @@ -3257,6 +3260,10 @@ void OBSBasicSettings::SaveAdvancedSettings() } #endif + if (WidgetChanged(ui->confirmOnExit)) + config_set_bool(GetGlobalConfig(), "General", "ConfirmOnExit", + ui->confirmOnExit->isChecked()); + SaveEdit(ui->filenameFormatting, "Output", "FilenameFormatting"); SaveEdit(ui->simpleRBPrefix, "SimpleOutput", "RecRBPrefix"); SaveEdit(ui->simpleRBSuffix, "SimpleOutput", "RecRBSuffix");