COMMON: Fix button state desynchronization when warping mouse
This commit is contained in:
parent
d2b8f9284c
commit
dc0bfbc724
1 changed files with 18 additions and 1 deletions
|
@ -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:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue