summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2018-02-07 16:56:18 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2018-02-08 01:01:13 +0100
commitfbc5f96d8e4520254f41f380b7f603495231fb1a (patch)
treee22992ca614aedd3565e12ff428ecb26932cf40f /dev-qt/qtgui/files
parentsci-mathematics/frobby: remove old (diff)
downloadgentoo-fbc5f96d8e4520254f41f380b7f603495231fb1a.tar.gz
gentoo-fbc5f96d8e4520254f41f380b7f603495231fb1a.tar.bz2
gentoo-fbc5f96d8e4520254f41f380b7f603495231fb1a.zip
dev-qt/qtgui: Fix libinput wheelevents
Patch taken from 5.9 branch (fixed in 5.9.5). KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=386762 Qt-Bug: https://bugreports.qt.io/browse/QTBUG-59261 See also: https://codereview.qt-project.org/#/c/212398/ Package-Manager: Portage-2.3.24, Repoman-2.3.6 Closes: https://github.com/gentoo/gentoo/pull/7109
Diffstat (limited to 'dev-qt/qtgui/files')
-rw-r--r--dev-qt/qtgui/files/qtgui-5.9.4-libinput-pixeldelta.patch68
1 files changed, 68 insertions, 0 deletions
diff --git a/dev-qt/qtgui/files/qtgui-5.9.4-libinput-pixeldelta.patch b/dev-qt/qtgui/files/qtgui-5.9.4-libinput-pixeldelta.patch
new file mode 100644
index 000000000000..b9adb8b2f623
--- /dev/null
+++ b/dev-qt/qtgui/files/qtgui-5.9.4-libinput-pixeldelta.patch
@@ -0,0 +1,68 @@
+From d196036024697a75868c1f1626525710495ca428 Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Date: Thu, 23 Nov 2017 14:25:04 +0100
+Subject: [PATCH] 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>
+---
+ src/gui/kernel/qevent.cpp | 1 +
+ src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 14 ++++++++------
+ 2 files changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
+index 06d52aa..c68f9af 100644
+--- a/src/gui/kernel/qevent.cpp
++++ b/src/gui/kernel/qevent.cpp
+@@ -971,6 +971,7 @@ QWheelEvent::QWheelEvent(const QPointF &pos, const QPointF& globalPos,
+ \li scrolling is about to begin, but the distance did not yet change (Qt::ScrollBegin),
+ \li or scrolling has ended and the distance did not change anymore (Qt::ScrollEnd).
+ \endlist
++ \note On X11 this value is driver specific and unreliable, use angleDelta() instead
+ */
+
+ /*!
+diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+index d1d97af..94f543f 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);
+ }
+ }
+--
+2.7.4
+