diff options
author | Thierry Crozat | 2016-08-03 22:43:44 +0100 |
---|---|---|
committer | Thierry Crozat | 2016-08-03 22:50:06 +0100 |
commit | 191a9a0c641b4d565ecc295f4b8353c15d163248 (patch) | |
tree | a968d8971ec861d60def2ea6f231cf522b87492a /engines/mohawk/dialogs.cpp | |
parent | 0cccd0ddd1d53b7d16e47a5b2d8ca62c87d992f4 (diff) | |
download | scummvm-rg350-191a9a0c641b4d565ecc295f4b8353c15d163248.tar.gz scummvm-rg350-191a9a0c641b4d565ecc295f4b8353c15d163248.tar.bz2 scummvm-rg350-191a9a0c641b4d565ecc295f4b8353c15d163248.zip |
MOHAWK: Load games from outside the options dialog loop
Loading games from inside the dialog loop may cause cursor
glitches. This commits applies the same fix to the
MohawkOptionsDialog as the one that already existed for
the global main menu. This finished to fix bug #7164.
Diffstat (limited to 'engines/mohawk/dialogs.cpp')
-rw-r--r-- | engines/mohawk/dialogs.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/engines/mohawk/dialogs.cpp b/engines/mohawk/dialogs.cpp index 8c11e3a5e9..38be98dfec 100644 --- a/engines/mohawk/dialogs.cpp +++ b/engines/mohawk/dialogs.cpp @@ -92,7 +92,7 @@ enum { MohawkOptionsDialog::MohawkOptionsDialog(MohawkEngine *vm) : GUI::Dialog(0, 0, 360, 200), - _vm(vm) { + _vm(vm), _loadSlot(-1) { _loadButton = new GUI::ButtonWidget(this, 245, 25, 100, 25, _("~L~oad"), 0, kLoadCmd); _saveButton = new GUI::ButtonWidget(this, 245, 60, 100, 25, _("~S~ave"), 0, kSaveCmd); new GUI::ButtonWidget(this, 245, 95, 100, 25, _("~Q~uit"), 0, kQuitCmd); @@ -112,6 +112,7 @@ MohawkOptionsDialog::~MohawkOptionsDialog() { void MohawkOptionsDialog::open() { GUI::Dialog::open(); + _loadSlot = -1; _loadButton->setEnabled(_vm->canLoadGameStateCurrently()); _saveButton->setEnabled(_vm->canSaveGameStateCurrently()); } @@ -133,12 +134,14 @@ void MohawkOptionsDialog::save() { } void MohawkOptionsDialog::load() { - int slot = _loadDialog->runModalWithCurrentTarget(); + // Do not load the game state from insite the dialog loop to + // avoid mouse cursor glitches (see bug #7164). Instead store + // the slot to load and let the code exectuting the dialog do + // the load after the dialog finished running. + _loadSlot = _loadDialog->runModalWithCurrentTarget(); - if (slot >= 0) { - _vm->loadGameState(slot); + if (_loadSlot >= 0) close(); - } } void MohawkOptionsDialog::reflowLayout() { |