summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-11-23 14:25:04 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-01-09 11:53:28 +0000
commitd196036024697a75868c1f1626525710495ca428 (patch)
tree30a699a768e1937799f7450ba10f78374a9f565f /src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
parent907a99f65b88cc5af85127ef8b665b173832b43e (diff)
Avoid providing bad pixelDeltas on X11
With libinput we now get a hardcoded resolution that is unrelated to the hardware. So avoid using that as a real pixel delta and document pixel deltas as being driver specific and unreliable on X11. Task-number: QTBUG-59261 Change-Id: I9fe86d80e7ccd290ed2e4091d7eafa52cb537d34 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Marco Martin <mart@kde.org> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbconnection_xi2.cpp')
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_xi2.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index d1d97affe8..94f543fd39 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -953,10 +953,12 @@ void QXcbConnection::xi2HandleScrollEvent(void *event, ScrollingDevice &scrollin
double delta = scrollingDevice.lastScrollPosition.y() - value;
scrollingDevice.lastScrollPosition.setY(value);
angleDelta.setY((delta / scrollingDevice.verticalIncrement) * 120);
- // We do not set "pixel" delta if it is only measured in ticks.
- if (scrollingDevice.verticalIncrement > 1)
+ // With most drivers the increment is 1 for wheels.
+ // For libinput it is hardcoded to a useless 15.
+ // For a proper touchpad driver it should be in the same order of magnitude as 120
+ if (scrollingDevice.verticalIncrement > 15)
rawDelta.setY(delta);
- else if (scrollingDevice.verticalIncrement < -1)
+ else if (scrollingDevice.verticalIncrement < -15)
rawDelta.setY(-delta);
}
}
@@ -965,10 +967,10 @@ void QXcbConnection::xi2HandleScrollEvent(void *event, ScrollingDevice &scrollin
double delta = scrollingDevice.lastScrollPosition.x() - value;
scrollingDevice.lastScrollPosition.setX(value);
angleDelta.setX((delta / scrollingDevice.horizontalIncrement) * 120);
- // We do not set "pixel" delta if it is only measured in ticks.
- if (scrollingDevice.horizontalIncrement > 1)
+ // See comment under vertical
+ if (scrollingDevice.horizontalIncrement > 15)
rawDelta.setX(delta);
- else if (scrollingDevice.horizontalIncrement < -1)
+ else if (scrollingDevice.horizontalIncrement < -15)
rawDelta.setX(-delta);
}
}