summaryrefslogtreecommitdiffhomepage
path: root/gui
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2017-02-27 11:40:33 +0100
committerStanislaw Halik <sthalik@misaki.pl>2017-02-27 11:42:28 +0100
commit303c83792cd034fc2bf40e71edde968c22df5324 (patch)
tree13df052f49cff97f1cb304de571c74a76bbe6a9b /gui
parentea145f8c1cc188f20e066af78e4167036b3993de (diff)
{base,options}-dialog: fix dialogs not savingopentrack-2.3.1_fix2
In case of the options dialog, running close() in doOK() made it go into closeEvent(), going into doCancel(), and reloading the settings prior to them getting saved. It's time for a hotfix2 build.
Diffstat (limited to 'gui')
-rw-r--r--gui/options-dialog.cpp24
-rw-r--r--gui/options-dialog.hpp2
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();