diff options
Diffstat (limited to 'engines/xeen/dialogs/dialogs_query.cpp')
-rw-r--r-- | engines/xeen/dialogs/dialogs_query.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/engines/xeen/dialogs/dialogs_query.cpp b/engines/xeen/dialogs/dialogs_query.cpp index 79f46826cd..876ddafc2b 100644 --- a/engines/xeen/dialogs/dialogs_query.cpp +++ b/engines/xeen/dialogs/dialogs_query.cpp @@ -68,8 +68,11 @@ bool Confirm::execute(const Common::String &msg, int mode) { bool result = false; while (!_vm->shouldExit()) { - events.pollEvents(); - checkEvents(_vm); + _buttonValue = 0; + while (!_vm->shouldExit() && !_buttonValue) { + events.pollEvents(); + checkEvents(_vm); + } if ((mode & 0x80) || _buttonValue == Common::KEYCODE_ESCAPE || _buttonValue == Common::KEYCODE_n) @@ -81,6 +84,7 @@ bool Confirm::execute(const Common::String &msg, int mode) { } } + events.clearEvents(); w.close(); return result; } @@ -108,6 +112,7 @@ bool YesNo::execute(bool type, bool townFlag) { Mode oldMode = _vm->_mode; _vm->_mode = oldMode == MODE_7 ? MODE_8 : MODE_7; + events.clearEvents(); if (!type) { confirmSprites.load("confirm.icn"); |