diff options
Diffstat (limited to 'src/platformsupport/input/evdevmouse')
-rw-r--r-- | src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp index 2e318a0c3a..e435f40c2d 100644 --- a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp +++ b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp @@ -121,7 +121,7 @@ void QEvdevMouseHandler::readMouseData() { struct ::input_event buffer[32]; int n = 0; - bool posChanged = false; + bool posChanged = false, btnChanged = false; bool pendingMouseEvent = false; int eventCompressCount = 0; forever { @@ -177,9 +177,7 @@ void QEvdevMouseHandler::readMouseData() } } else if (data->type == EV_KEY && data->code == BTN_TOUCH) { m_buttons = data->value ? Qt::LeftButton : Qt::NoButton; - - sendMouseEvent(); - pendingMouseEvent = false; + btnChanged = true; } else if (data->type == EV_KEY && data->code >= BTN_LEFT && data->code <= BTN_JOYSTICK) { Qt::MouseButton button = Qt::NoButton; // BTN_LEFT == 0x110 in kernel's input.h @@ -206,10 +204,13 @@ void QEvdevMouseHandler::readMouseData() m_buttons |= button; else m_buttons &= ~button; - sendMouseEvent(); - pendingMouseEvent = false; + btnChanged = true; } else if (data->type == EV_SYN && data->code == SYN_REPORT) { - if (posChanged) { + if (btnChanged) { + btnChanged = posChanged = false; + sendMouseEvent(); + pendingMouseEvent = false; + } else if (posChanged) { posChanged = false; if (m_compression) { pendingMouseEvent = true; |