diff options
-rw-r--r-- | engines/gob/inter_v1.cpp | 1 | ||||
-rw-r--r-- | engines/gob/util.cpp | 5 | ||||
-rw-r--r-- | engines/gob/util.h | 2 |
3 files changed, 6 insertions, 2 deletions
diff --git a/engines/gob/inter_v1.cpp b/engines/gob/inter_v1.cpp index b1bf04045f..5ac605e301 100644 --- a/engines/gob/inter_v1.cpp +++ b/engines/gob/inter_v1.cpp @@ -1656,6 +1656,7 @@ bool Inter_v1::o1_keyFunc(OpFuncParams ¶ms) { break; case 1: + _vm->_util->forceMouseUp(true); key = _vm->_game->checkKeys(&_vm->_global->_inter_mouseX, &_vm->_global->_inter_mouseY, &_vm->_game->_mouseButtons, 0); storeKey(key); diff --git a/engines/gob/util.cpp b/engines/gob/util.cpp index 00665acb96..c0a0ecbf65 100644 --- a/engines/gob/util.cpp +++ b/engines/gob/util.cpp @@ -261,7 +261,10 @@ void Util::waitMouseRelease(char drawMouse) { } while (buttons != 0); } -void Util::forceMouseUp(void) { +void Util::forceMouseUp(bool onlyWhenSynced) { + if (onlyWhenSynced && (_vm->_game->_mouseButtons != _mouseButtons)) + return; + _vm->_game->_mouseButtons = 0; _mouseButtons = 0; } diff --git a/engines/gob/util.h b/engines/gob/util.h index ca9042598c..e6145fcde7 100644 --- a/engines/gob/util.h +++ b/engines/gob/util.h @@ -64,7 +64,7 @@ public: void waitMouseUp(void); void waitMouseDown(void); void waitMouseRelease(char drawMouse); - void forceMouseUp(void); + void forceMouseUp(bool onlyWhenSynced = false); void clearPalette(void); void setFrameRate(int16 rate); |