aboutsummaryrefslogtreecommitdiff
path: root/engines/lab/interface.cpp
diff options
context:
space:
mode:
authorWillem Jan Palenstijn2015-12-24 20:29:58 +0100
committerWillem Jan Palenstijn2015-12-24 20:29:58 +0100
commitf2194d595dd50c9ee58a4543264392ff2208d7f7 (patch)
tree5260c08f3da99fa5eca7620c95bcd367de6daa31 /engines/lab/interface.cpp
parentda2074146f8189ae1379b2ac51948de447ed0c05 (diff)
parentc191efa62348c3f7950a0272ee816aa49c4dccce (diff)
downloadscummvm-rg350-f2194d595dd50c9ee58a4543264392ff2208d7f7.tar.gz
scummvm-rg350-f2194d595dd50c9ee58a4543264392ff2208d7f7.tar.bz2
scummvm-rg350-f2194d595dd50c9ee58a4543264392ff2208d7f7.zip
Merge branch 'master' of github.com:scummvm/scummvm
Diffstat (limited to 'engines/lab/interface.cpp')
-rw-r--r--engines/lab/interface.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/engines/lab/interface.cpp b/engines/lab/interface.cpp
index 60b3236640..507e0b27d5 100644
--- a/engines/lab/interface.cpp
+++ b/engines/lab/interface.cpp
@@ -39,7 +39,7 @@
namespace Lab {
-Button *EventManager::createButton(uint16 x, uint16 y, uint16 id, uint16 key, Image *image, Image *altImage) {
+Button *EventManager::createButton(uint16 x, uint16 y, uint16 id, Common::KeyCode key, Image *image, Image *altImage) {
Button *button = new Button();
if (button) {
@@ -92,7 +92,7 @@ uint16 EventManager::makeButtonKeyEquiv(uint16 key) {
return key;
}
-Button *EventManager::checkNumButtonHit(ButtonList *buttonList, uint16 key) {
+Button *EventManager::checkNumButtonHit(ButtonList *buttonList, Common::KeyCode key) {
uint16 gkey = key - '0';
if (!buttonList)
@@ -100,9 +100,10 @@ Button *EventManager::checkNumButtonHit(ButtonList *buttonList, uint16 key) {
for (ButtonList::iterator buttonItr = buttonList->begin(); buttonItr != buttonList->end(); ++buttonItr) {
Button *button = *buttonItr;
- if (((gkey - 1 == button->_buttonId) || ((gkey == 0) && (button->_buttonId == 9))
- || ((button->_keyEquiv != 0) && (makeButtonKeyEquiv(key) == button->_keyEquiv)))
- && button->_isEnabled) {
+ if (!button->_isEnabled)
+ continue;
+
+ if ((gkey - 1 == button->_buttonId) || (gkey == 0 && button->_buttonId == 9) || (button->_keyEquiv != Common::KEYCODE_INVALID && key == button->_keyEquiv)) {
button->_altImage->drawImage(button->_x, button->_y);
_vm->_system->delayMillis(80);
button->_image->drawImage(button->_x, button->_y);
@@ -117,8 +118,7 @@ IntuiMessage *EventManager::getMsg() {
static IntuiMessage message;
updateMouse();
-
- Common::KeyCode curKey;
+ processInput();
if (_lastButtonHit) {
updateMouse();
@@ -135,18 +135,22 @@ IntuiMessage *EventManager::getMsg() {
message._mouse.x /= 2;
_leftClick = _rightClick = false;
return &message;
- } else if (keyPress(&curKey)) {
- message._code = curKey;
- message._mouse = _mousePos;
- Button *curButton = checkNumButtonHit(_screenButtonList, message._code);
+ } else if (_keyPressed.keycode != Common::KEYCODE_INVALID) {
+ Button *curButton = checkNumButtonHit(_screenButtonList, _keyPressed.keycode);
if (curButton) {
message._msgClass = kMessageButtonUp;
message._code = curButton->_buttonId;
- } else
+ } else {
message._msgClass = kMessageRawKey;
+ message._code = _keyPressed.keycode;
+ }
message._qualifier = _keyPressed.flags;
+ message._mouse = _mousePos;
+
+ _keyPressed.keycode = Common::KEYCODE_INVALID;
+
return &message;
} else
return nullptr;