summaryrefslogtreecommitdiffhomepage
path: root/gui/options-dialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/options-dialog.cpp')
-rw-r--r--gui/options-dialog.cpp24
1 files changed, 16 insertions, 8 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();
+ }
}