[Scummvm-git-logs] scummvm master -> 5819da8d3b01c1726c847b23414179c8895c94f5

dreammaster dreammaster at scummvm.org
Sun Dec 17 02:12:12 CET 2017


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
5819da8d3b XEEN: Fix handling of keyboard hotkeys


Commit: 5819da8d3b01c1726c847b23414179c8895c94f5
    https://github.com/scummvm/scummvm/commit/5819da8d3b01c1726c847b23414179c8895c94f5
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-12-16T20:12:03-05:00

Commit Message:
XEEN: Fix handling of keyboard hotkeys

Changed paths:
    engines/xeen/dialogs.cpp
    engines/xeen/events.cpp
    engines/xeen/events.h


diff --git a/engines/xeen/dialogs.cpp b/engines/xeen/dialogs.cpp
index 3925d69..d44a361 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 a4b0134..cc58edd 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 9a086b8..cf74a64 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;
 
 	/**





More information about the Scummvm-git-logs mailing list