COMMON: Fix button state desynchronization when warping mouse

This commit is contained in:
Le Philousophe 2019-05-21 17:42:55 +02:00 committed by Eugene Sandulenko
parent d2b8f9284c
commit dc0bfbc724

View file

@ -281,15 +281,32 @@ void DefaultEventManager::purgeMouseEvents() {
while (!_eventQueue.empty()) { while (!_eventQueue.empty()) {
Common::Event event = _eventQueue.pop(); Common::Event event = _eventQueue.pop();
switch (event.type) { switch (event.type) {
case Common::EVENT_MOUSEMOVE: // Update button state even when purging events to avoid desynchronisation with real button state
case Common::EVENT_LBUTTONDOWN: case Common::EVENT_LBUTTONDOWN:
_mousePos = event.mouse;
_buttonState |= LBUTTON;
break;
case Common::EVENT_LBUTTONUP: case Common::EVENT_LBUTTONUP:
_mousePos = event.mouse;
_buttonState &= ~LBUTTON;
break;
case Common::EVENT_RBUTTONDOWN: case Common::EVENT_RBUTTONDOWN:
_mousePos = event.mouse;
_buttonState |= RBUTTON;
break;
case Common::EVENT_RBUTTONUP: case Common::EVENT_RBUTTONUP:
_mousePos = event.mouse;
_buttonState &= ~RBUTTON;
break;
case Common::EVENT_WHEELUP: case Common::EVENT_WHEELUP:
case Common::EVENT_WHEELDOWN: case Common::EVENT_WHEELDOWN:
case Common::EVENT_MBUTTONDOWN: case Common::EVENT_MBUTTONDOWN:
case Common::EVENT_MBUTTONUP: case Common::EVENT_MBUTTONUP:
case Common::EVENT_MOUSEMOVE:
// do nothing // do nothing
break; break;
default: default: