summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2014-08-19 14:45:45 +0200
committerShawn Rutledge <shawn.rutledge@digia.com>2014-08-20 10:21:13 +0200
commit29787ec29cfa579e5bbf896dee093931a9f1385f (patch)
treef4c68c958bead680cf3e2d4616342de549e688dd
parent1bae226076b37ba925bf810639e1674130ad622a (diff)
Detect wrongly labelled wheel buttons
A mouse device with both missing labels and a wrongly placed label on the mouse wheel buttons have been spotted. This patch makes the XInput2 code even more lenient to better match legacy systems that always assumed button 4 and 5 are mapped that way. Task-number: QTBUG-40806 Change-Id: I7cc52f3d9c54e15e6f3ddcc2bdeb1bb8e0ac9eca Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_xi2.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index e21db89a20..4986e85728 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -164,7 +164,10 @@ void QXcbConnection::xi2SetupDevices()
if (bci->num_buttons >= 5) {
Atom label4 = bci->labels[3];
Atom label5 = bci->labels[4];
- if ((!label4 || qatom(label4) == QXcbAtom::ButtonWheelUp) && (!label5 || qatom(label5) == QXcbAtom::ButtonWheelDown))
+ // Some drivers have no labels on the wheel buttons, some have no label on just one and some have no label on
+ // button 4 and the wrong one on button 5. So we just check that they are not labelled with unrelated buttons.
+ if ((!label4 || qatom(label4) == QXcbAtom::ButtonWheelUp || qatom(label4) == QXcbAtom::ButtonWheelDown) &&
+ (!label5 || qatom(label5) == QXcbAtom::ButtonWheelUp || qatom(label5) == QXcbAtom::ButtonWheelDown))
scrollingDevice.legacyOrientations |= Qt::Vertical;
}
if (bci->num_buttons >= 7) {