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(); | 
