From e0914eaec8cbb588e9f933720b9bbb1bc3b9e6bb Mon Sep 17 00:00:00 2001 From: DanielSvoboda Date: Fri, 21 Feb 2025 18:11:19 -0300 Subject: [PATCH] fix close (X) without saving --- src/qt_gui/settings_dialog.cpp | 11 +++++++++++ src/qt_gui/settings_dialog.h | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/qt_gui/settings_dialog.cpp b/src/qt_gui/settings_dialog.cpp index 370e4c158..ee88bbbab 100644 --- a/src/qt_gui/settings_dialog.cpp +++ b/src/qt_gui/settings_dialog.cpp @@ -118,6 +118,7 @@ SettingsDialog::SettingsDialog(std::span physical_devices, connect(ui->buttonBox, &QDialogButtonBox::clicked, this, [this, config_dir](QAbstractButton* button) { if (button == ui->buttonBox->button(QDialogButtonBox::Save)) { + is_saving = true; UpdateSettings(); Config::save(config_dir / "config.toml"); QWidget::close(); @@ -343,6 +344,16 @@ SettingsDialog::SettingsDialog(std::span physical_devices, } } +void SettingsDialog::closeEvent(QCloseEvent* event) { + if (!is_saving) { + ui->backgroundImageOpacitySlider->setValue(backgroundImageOpacitySlider_backup); + emit BackgroundOpacityChanged(backgroundImageOpacitySlider_backup); + ui->BGMVolumeSlider->setValue(bgm_volume_backup); + BackgroundMusicPlayer::getInstance().setVolume(bgm_volume_backup); + } + QDialog::closeEvent(event); +} + void SettingsDialog::LoadValuesFromConfig() { std::filesystem::path userdir = Common::FS::GetUserPath(Common::FS::PathType::UserDir); diff --git a/src/qt_gui/settings_dialog.h b/src/qt_gui/settings_dialog.h index c440351f6..09aa2b855 100644 --- a/src/qt_gui/settings_dialog.h +++ b/src/qt_gui/settings_dialog.h @@ -42,6 +42,7 @@ private: void InitializeEmulatorLanguages(); void OnLanguageChanged(int index); void OnCursorStateChanged(s16 index); + void closeEvent(QCloseEvent* event) override; std::unique_ptr ui; @@ -50,4 +51,6 @@ private: QString defaultTextEdit; int initialHeight; + + bool is_saving = false; };