aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/dialogs.cpp
diff options
context:
space:
mode:
authorThierry Crozat2016-08-03 22:43:44 +0100
committerThierry Crozat2016-08-03 22:50:06 +0100
commit191a9a0c641b4d565ecc295f4b8353c15d163248 (patch)
treea968d8971ec861d60def2ea6f231cf522b87492a /engines/mohawk/dialogs.cpp
parent0cccd0ddd1d53b7d16e47a5b2d8ca62c87d992f4 (diff)
downloadscummvm-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.cpp13
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() {