mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
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
This commit is contained in:
68
dev-qt/qtgui/files/qtgui-5.9.4-libinput-pixeldelta.patch
Normal file
68
dev-qt/qtgui/files/qtgui-5.9.4-libinput-pixeldelta.patch
Normal file
@@ -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
|
||||
|
||||
174
dev-qt/qtgui/qtgui-5.9.4-r2.ebuild
Normal file
174
dev-qt/qtgui/qtgui-5.9.4-r2.ebuild
Normal file
@@ -0,0 +1,174 @@
|
||||
# Copyright 1999-2018 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=6
|
||||
QT5_MODULE="qtbase"
|
||||
inherit qt5-build
|
||||
|
||||
DESCRIPTION="The GUI module and platform plugins for the Qt5 framework"
|
||||
|
||||
if [[ ${QT5_BUILD_TYPE} == release ]]; then
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~x86"
|
||||
fi
|
||||
|
||||
# TODO: linuxfb
|
||||
|
||||
IUSE="accessibility dbus egl eglfs evdev +gif gles2 ibus
|
||||
jpeg +libinput +png tslib tuio +udev vnc +xcb"
|
||||
REQUIRED_USE="
|
||||
|| ( eglfs xcb )
|
||||
accessibility? ( dbus xcb )
|
||||
eglfs? ( egl )
|
||||
ibus? ( dbus )
|
||||
libinput? ( udev )
|
||||
xcb? ( gles2? ( egl ) )
|
||||
"
|
||||
|
||||
RDEPEND="
|
||||
dev-libs/glib:2
|
||||
~dev-qt/qtcore-${PV}
|
||||
media-libs/fontconfig
|
||||
>=media-libs/freetype-2.6.1:2
|
||||
>=media-libs/harfbuzz-1.0.6:=
|
||||
>=sys-libs/zlib-1.2.5
|
||||
virtual/opengl
|
||||
dbus? ( ~dev-qt/qtdbus-${PV} )
|
||||
egl? ( media-libs/mesa[egl] )
|
||||
eglfs? (
|
||||
media-libs/mesa[gbm]
|
||||
x11-libs/libdrm
|
||||
)
|
||||
evdev? ( sys-libs/mtdev )
|
||||
gles2? ( media-libs/mesa[gles2] )
|
||||
jpeg? ( virtual/jpeg:0 )
|
||||
libinput? (
|
||||
dev-libs/libinput:=
|
||||
x11-libs/libxkbcommon
|
||||
)
|
||||
png? ( media-libs/libpng:0= )
|
||||
tslib? ( x11-libs/tslib )
|
||||
tuio? ( ~dev-qt/qtnetwork-${PV} )
|
||||
udev? ( virtual/libudev:= )
|
||||
vnc? ( ~dev-qt/qtnetwork-${PV} )
|
||||
xcb? (
|
||||
x11-libs/libICE
|
||||
x11-libs/libSM
|
||||
x11-libs/libX11
|
||||
>=x11-libs/libXi-1.7.5
|
||||
>=x11-libs/libxcb-1.10:=[xkb]
|
||||
>=x11-libs/libxkbcommon-0.4.1[X]
|
||||
x11-libs/xcb-util-image
|
||||
x11-libs/xcb-util-keysyms
|
||||
x11-libs/xcb-util-renderutil
|
||||
x11-libs/xcb-util-wm
|
||||
)
|
||||
"
|
||||
DEPEND="${RDEPEND}
|
||||
evdev? ( sys-kernel/linux-headers )
|
||||
udev? ( sys-kernel/linux-headers )
|
||||
"
|
||||
PDEPEND="
|
||||
ibus? ( app-i18n/ibus )
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/${P}-qsimpledrag.patch" # QTBUG-66103
|
||||
"${FILESDIR}/${P}-libinput-pixeldelta.patch" # QTBUG-59261
|
||||
)
|
||||
|
||||
QT5_TARGET_SUBDIRS=(
|
||||
src/gui
|
||||
src/openglextensions
|
||||
src/platformheaders
|
||||
src/platformsupport
|
||||
src/plugins/generic
|
||||
src/plugins/imageformats
|
||||
src/plugins/platforms
|
||||
src/plugins/platforminputcontexts
|
||||
)
|
||||
|
||||
QT5_GENTOO_CONFIG=(
|
||||
accessibility:accessibility-atspi-bridge
|
||||
egl
|
||||
eglfs
|
||||
eglfs:eglfs_egldevice:
|
||||
eglfs:eglfs_gbm:
|
||||
evdev
|
||||
evdev:mtdev:
|
||||
:fontconfig
|
||||
:system-freetype:FREETYPE
|
||||
!:no-freetype:
|
||||
!gif:no-gif:
|
||||
gles2::OPENGL_ES
|
||||
gles2:opengles2:OPENGL_ES_2
|
||||
!:no-gui:
|
||||
:system-harfbuzz:HARFBUZZ
|
||||
!:no-harfbuzz:
|
||||
jpeg:system-jpeg:IMAGEFORMAT_JPEG
|
||||
!jpeg:no-jpeg:
|
||||
libinput
|
||||
libinput:xkbcommon-evdev:
|
||||
:opengl
|
||||
png:png:
|
||||
png:system-png:IMAGEFORMAT_PNG
|
||||
!png:no-png:
|
||||
tslib
|
||||
udev:libudev:
|
||||
xcb:xcb:
|
||||
xcb:xcb-glx:
|
||||
xcb:xcb-plugin:
|
||||
xcb:xcb-render:
|
||||
xcb:xcb-sm:
|
||||
xcb:xcb-xlib:
|
||||
xcb:xinput2:
|
||||
xcb::XKB
|
||||
)
|
||||
|
||||
QT5_GENTOO_PRIVATE_CONFIG=(
|
||||
:gui
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
# egl_x11 is activated when both egl and xcb are enabled
|
||||
use egl && QT5_GENTOO_CONFIG+=(xcb:egl_x11) || QT5_GENTOO_CONFIG+=(egl:egl_x11)
|
||||
|
||||
qt_use_disable_config dbus dbus \
|
||||
src/platformsupport/themes/genericunix/genericunix.pri
|
||||
|
||||
qt_use_disable_config tuio udpsocket src/plugins/generic/generic.pro
|
||||
|
||||
qt_use_disable_mod ibus dbus \
|
||||
src/plugins/platforminputcontexts/platforminputcontexts.pro
|
||||
|
||||
use vnc || sed -i -e '/SUBDIRS += vnc/d' \
|
||||
src/plugins/platforms/platforms.pro || die
|
||||
|
||||
qt5-build_src_prepare
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local myconf=(
|
||||
$(usex dbus -dbus-linked '')
|
||||
$(qt_use egl)
|
||||
$(qt_use eglfs)
|
||||
$(usex eglfs '-gbm -kms' '')
|
||||
$(qt_use evdev)
|
||||
$(qt_use evdev mtdev)
|
||||
-fontconfig
|
||||
-system-freetype
|
||||
$(usex gif '' -no-gif)
|
||||
-gui
|
||||
-system-harfbuzz
|
||||
$(qt_use jpeg libjpeg system)
|
||||
$(qt_use libinput)
|
||||
$(qt_use libinput xkbcommon-evdev)
|
||||
-opengl $(usex gles2 es2 desktop)
|
||||
$(qt_use png libpng system)
|
||||
$(qt_use tslib)
|
||||
$(qt_use udev libudev)
|
||||
$(qt_use xcb xcb system)
|
||||
$(qt_use xcb xkbcommon-x11 system)
|
||||
$(usex xcb '-xcb-xlib -xinput2 -xkb' '')
|
||||
)
|
||||
qt5-build_src_configure
|
||||
}
|
||||
Reference in New Issue
Block a user