From a0933f4d7485d22f38b80c67f79b8d3f721b19a2 Mon Sep 17 00:00:00 2001 From: Rick Stockton Date: Wed, 7 Mar 2012 16:38:37 -0800 Subject: [PATCH] BlackBerry Plugin: support 8 mouse buttons, instead of just 3. The mask of possible mouse buttons in QNX provides tracking for the up/down State of up to 8 mouse buttons. This update adds support for the 5 buttons which we previously ignored in Qt on this Platform. Task-number: QTBUG-24682 Change-Id: I8c1d2b2a5d0deb3b857fb387c242c3792e21ff95 Reviewed-by: Kevin Krammer Reviewed-by: Robin Burchell --- .../platforms/blackberry/qbbeventthread.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/plugins/platforms/blackberry/qbbeventthread.cpp b/src/plugins/platforms/blackberry/qbbeventthread.cpp index 547428d1c48..6951921fe93 100644 --- a/src/plugins/platforms/blackberry/qbbeventthread.cpp +++ b/src/plugins/platforms/blackberry/qbbeventthread.cpp @@ -380,13 +380,26 @@ void QBBEventThread::handlePointerEvent(screen_event_t event) QPoint localPoint(windowPos[0], windowPos[1]); // Convert buttons. + // Some QNX header files invert 'Right Button versus "Left Button' ('Right' == 0x01). But they also offer a 'Button Swap' bit, + // so we may receive events as shown. (If this is wrong, the fix is easy.) + // QNX Button mask is 8 buttons wide, with a maximum value of x080. Qt::MouseButtons buttons = Qt::NoButton; - if (buttonState & 1) + if (buttonState & 0x01) buttons |= Qt::LeftButton; - if (buttonState & 2) + if (buttonState & 0x02) buttons |= Qt::MidButton; - if (buttonState & 4) + if (buttonState & 0x04) buttons |= Qt::RightButton; + if (buttonState & 0x08) + buttons |= Qt::ExtraButton1; // AKA 'Qt::BackButton' + if (buttonState & 0x10) + buttons |= Qt::ExtraButton2; // AKA 'Qt::ForwardButton' + if (buttonState & 0x20) + buttons |= Qt::ExtraButton3; + if (buttonState & 0x40) + buttons |= Qt::ExtraButton4; + if (buttonState & 0x80) + buttons |= Qt::ExtraButton5; if (w) { // Inject mouse event into Qt only if something has changed.