Suppport up to 27 mouse buttons from DirectFB Plugin.
authorRick Stockton <rickstockton@reno-computerhelp.com>
Fri, 17 Feb 2012 03:20:35 +0000 (19:20 -0800)
committerQt by Nokia <qt-info@nokia.com>
Thu, 23 Feb 2012 00:31:59 +0000 (01:31 +0100)
Previous to this update, our plugin accepts only 3 moue buttons
(from DirectFB, to be translated into Qt::MouseButton values.)
This update changes our Plugin, so that it will successfully
translate up to 27 mouse button numbers. It is unclear, to the
author, which configurations of DirectFB on Linux might be
capable of actually sending high-numbered mouse button Events
to Qt. But, if/when a DirectFB configuration does so, this
change makes Qt ready to recognize and work with the button event.

Task-number: QTBUG-24335

Change-Id: I8839ed386eb3d261a187355a244e80d511399ea8
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
src/plugins/platforms/directfb/qdirectfbconvenience.cpp

index 7b253b7..e41a2e0 100644 (file)
@@ -128,13 +128,65 @@ IDirectFBSurface *QDirectFbConvenience::dfbSurfaceForPlatformPixmap(QPlatformPix
 
 Qt::MouseButton QDirectFbConvenience::mouseButton(DFBInputDeviceButtonIdentifier identifier)
 {
-    switch (identifier){
-    case DIBI_LEFT:
+    // The Enum contains values for DIBI_FIRST (= DIBI_LEFT), DIBI_LAST (= 0x1f,) and
+    // just 3 enumerated Mouse Buttons. To convert into *ALL* possible Qt::MoueButton values,
+    // the parameter is cast as integer.
+
+    switch (int(identifier)) {
+    case DIBI_LEFT:                 // value is 0x00
         return Qt::LeftButton;
-    case DIBI_MIDDLE:
-        return Qt::MidButton;
-    case DIBI_RIGHT:
+    case DIBI_RIGHT:                // value is 0x01
         return Qt::RightButton;
+    case DIBI_MIDDLE:               // value is 0x02
+        return Qt::MidButton;
+    case 0x03:
+        return Qt::BackButton;
+    case 0x04:
+        return Qt::ForwardButton;
+    case 0x05:
+        return Qt::ExtraButton3;
+    case 0x06:
+        return Qt::ExtraButton4;
+    case 0x07:
+        return Qt::ExtraButton5;
+    case 0x08:
+        return Qt::ExtraButton6;
+    case 0x09:
+        return Qt::ExtraButton7;
+    case 0x0a:
+        return Qt::ExtraButton8;
+    case 0x0b:
+        return Qt::ExtraButton9;
+    case 0x0c:
+        return Qt::ExtraButton10;
+    case 0x0d:
+        return Qt::ExtraButton11;
+    case 0x0e:
+        return Qt::ExtraButton12;
+    case 0x0f:
+        return Qt::ExtraButton13;
+    case 0x10:
+        return Qt::ExtraButton14;
+    case 0x11:
+        return Qt::ExtraButton15;
+    case 0x12:
+        return Qt::ExtraButton16;
+    case 0x13:
+        return Qt::ExtraButton17;
+    case 0x14:
+        return Qt::ExtraButton18;
+    case 0x15:
+        return Qt::ExtraButton19;
+    case 0x16:
+        return Qt::ExtraButton20;
+    case 0x17:
+        return Qt::ExtraButton21;
+    case 0x18:
+        return Qt::ExtraButton22;
+    case 0x19:
+        return Qt::ExtraButton23;
+    case 0x1a:
+        return Qt::ExtraButton24;
     default:
         return Qt::NoButton;
     }