diff options
author | Paul Gilbert | 2017-12-16 20:12:03 -0500 |
---|---|---|
committer | Paul Gilbert | 2017-12-16 20:12:03 -0500 |
commit | 5819da8d3b01c1726c847b23414179c8895c94f5 (patch) | |
tree | 9e1ffb5e574d9e627dde982c1a0247946e59e98e | |
parent | 56e7ef2f3d96ceecc6bc83a38c81d2000e58f81c (diff) | |
download | scummvm-rg350-5819da8d3b01c1726c847b23414179c8895c94f5.tar.gz scummvm-rg350-5819da8d3b01c1726c847b23414179c8895c94f5.tar.bz2 scummvm-rg350-5819da8d3b01c1726c847b23414179c8895c94f5.zip |
XEEN: Fix handling of keyboard hotkeys
-rw-r--r-- | engines/xeen/dialogs.cpp | 2 | ||||
-rw-r--r-- | engines/xeen/events.cpp | 12 | ||||
-rw-r--r-- | engines/xeen/events.h | 3 |
3 files changed, 8 insertions, 9 deletions
diff --git a/engines/xeen/dialogs.cpp b/engines/xeen/dialogs.cpp index 3925d69b45..d44a361c3c 100644 --- a/engines/xeen/dialogs.cpp +++ b/engines/xeen/dialogs.cpp @@ -95,7 +95,7 @@ bool ButtonContainer::checkEvents(XeenEngine *vm) { else if (_buttonValue == Common::KEYCODE_KP_ENTER) _buttonValue = Common::KEYCODE_RETURN; - _buttonValue |= (keyState.flags & ~Common::KBD_CAPS) << 16; + _buttonValue |= (keyState.flags & ~Common::KBD_STICKY) << 16; } if (_buttonValue) { diff --git a/engines/xeen/events.cpp b/engines/xeen/events.cpp index a4b0134d31..cc58edda89 100644 --- a/engines/xeen/events.cpp +++ b/engines/xeen/events.cpp @@ -35,7 +35,6 @@ EventsManager::EventsManager(XeenEngine *vm) : _vm(vm), _frameCounter(0), _priorFrameCounterTime(0), _gameCounter(0), _leftButton(false), _rightButton(false), _sprites("mouse.icn") { Common::fill(&_gameCounters[0], &_gameCounters[6], 0); - _key.keycode = Common::KEYCODE_INVALID; } EventsManager::~EventsManager() { @@ -81,7 +80,7 @@ void EventsManager::pollEvents() { _vm->_debugger->attach(); _vm->_debugger->onFrame(); } else { - _key = event.kbd; + _keys.push(event.kbd); } break; case Common::EVENT_MOUSEMOVE: @@ -111,7 +110,7 @@ void EventsManager::pollEventsAndWait() { } void EventsManager::clearEvents() { - _key.keycode = Common::KEYCODE_INVALID; + _keys.clear(); _leftButton = _rightButton = false; } @@ -122,17 +121,16 @@ void EventsManager::debounceMouse() { } } bool EventsManager::getKey(Common::KeyState &key) { - if (_key.keycode == Common::KEYCODE_INVALID) { + if (_keys.empty()) { return false; } else { - key = _key; - _key.keycode = Common::KEYCODE_INVALID; + key = _keys.pop(); return true; } } bool EventsManager::isKeyPending() const { - return _key.keycode != Common::KEYCODE_INVALID; + return !_keys.empty(); } bool EventsManager::isKeyMousePressed() { diff --git a/engines/xeen/events.h b/engines/xeen/events.h index 9a086b8f19..cf74a641c6 100644 --- a/engines/xeen/events.h +++ b/engines/xeen/events.h @@ -25,6 +25,7 @@ #include "common/scummsys.h" #include "common/events.h" +#include "common/queue.h" #include "xeen/sprites.h" namespace Xeen { @@ -40,7 +41,7 @@ private: uint32 _priorFrameCounterTime; uint32 _gameCounter; uint32 _gameCounters[6]; - Common::KeyState _key; + Common::Queue<Common::KeyState> _keys; SpriteResource _sprites; /** |