diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/options-dialog.cpp | 24 | ||||
-rw-r--r-- | gui/options-dialog.hpp | 2 |
2 files changed, 17 insertions, 9 deletions
diff --git a/gui/options-dialog.cpp b/gui/options-dialog.cpp index 8e420a83..51da498a 100644 --- a/gui/options-dialog.cpp +++ b/gui/options-dialog.cpp @@ -145,6 +145,11 @@ OptionsDialog::OptionsDialog(std::function<void(bool)> pause_keybindings) : } } +void OptionsDialog::closeEvent(QCloseEvent *) +{ + done(int(result())); +} + void OptionsDialog::bind_key(key_opts& kopts, QLabel* label) { kopts.button = -1; @@ -199,11 +204,11 @@ void OptionsDialog::bind_key(key_opts& kopts, QLabel* label) void OptionsDialog::doOK() { - if (!close()) // dialog was closed already - return; if (isHidden()) // close() can return true twice in a row it seems return; hide(); + if (!close()) // dialog was closed already + return; main.b->save(); ui.game_detector->save(); @@ -213,11 +218,11 @@ void OptionsDialog::doOK() void OptionsDialog::doCancel() { - if (!close()) // dialog was closed already - return; if (isHidden()) // close() can return true twice in a row it seems return; hide(); + if (!close()) // dialog was closed already + return; main.b->reload(); ui.game_detector->revert(); @@ -226,8 +231,11 @@ void OptionsDialog::doCancel() void OptionsDialog::done(int res) { - if (res == QDialog::Accepted) - doOK(); - else - doCancel(); + if (isVisible()) + { + if (res == QDialog::Accepted) + doOK(); + else + doCancel(); + } } diff --git a/gui/options-dialog.hpp b/gui/options-dialog.hpp index e9359b6d..dab919ed 100644 --- a/gui/options-dialog.hpp +++ b/gui/options-dialog.hpp @@ -18,7 +18,7 @@ private: main_settings main; std::function<void(bool)> pause_keybindings; Ui::options_dialog ui; - void closeEvent(QCloseEvent *) override { doCancel(); } + void closeEvent(QCloseEvent *) override; static QString kopts_to_string(const key_opts& opts); private slots: void doOK(); |