diff --git a/0001-Don-t-rely-on-QQuickWindow-delivering-QEvent-Ungrab-.patch b/0001-Don-t-rely-on-QQuickWindow-delivering-QEvent-Ungrab-.patch new file mode 100644 index 0000000..b149c8e --- /dev/null +++ b/0001-Don-t-rely-on-QQuickWindow-delivering-QEvent-Ungrab-.patch @@ -0,0 +1,88 @@ +From 3a832a27fc655ea39c8a2943ad9af41213fea8df Mon Sep 17 00:00:00 2001 +From: Eike Hein +Date: Sat, 17 Jun 2017 12:19:26 +0200 +Subject: [PATCH] Don't rely on QQuickWindow delivering QEvent::Ungrab as + mouseUngrabEvent (as it no longer does in Qt 5.8+) + +Summary: +QQuickWindow::sendEvent in Qt 5.7 and older had the following code +to deliver QEvent::UngrabMouse by calling QQuickItem::mouseUngrabEvent: + +case QEvent::UngrabMouse: { + QSet hasFiltered; + if (!d->sendFilteredMouseEvent(item->parentItem(), item, e, &hasFiltered)) { + e->accept(); + item->mouseUngrabEvent(); + } + } + +This is gone from Qt 5.8+. While QEvent::Ungrab is still delivered to +items, QQuickItem::mouseUngrabEvent is only called under constrained +circumstances elsewhere, e.g. when ending an actual mouse grab held by +an item and tracked by Qt. + +MouseEventListener relied on mouseUngrabEvent being called to implement +something akin to MouseArea::canceled: Signaling a user it should clean +up state after a press event, instead of, say, assuming the button is +still held and waiting around for a release event. While QEvent::Ungrab +was already being intercepted as well, it was only done for event de- +duplication, not used for the above. + +This changes the code so handleUngrab checks first whether we're +actually in press state (to make it safe to call repeatedly) and then +call it from both the generic event handler and mouseUngrabEvent. This +makes it work again with newer Qts. + +We rely on this particularly in the desktop containment, where we use +EventGenerator from this same lib to deliver QEvent::Ungrab to applets +when the containment goes into applet move mode on press-and-hold. +Without MouseEventListener emiting canceled in response, e.g. moving +a Folder View applet will e.g. put it into rectangle selection mode +unwanted. +BUG:380354 + +Reviewers: #plasma, davidedmundson + +Reviewed By: #plasma, davidedmundson + +Subscribers: plasma-devel, #frameworks + +Tags: #plasma, #frameworks + +Differential Revision: https://phabricator.kde.org/D6246 +--- + src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +diff --git a/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp b/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp +index af4d76f..0b8d981 100644 +--- a/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp ++++ b/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp +@@ -325,6 +325,7 @@ bool MouseEventListener::childMouseEventFilter(QQuickItem *item, QEvent *event) + } + case QEvent::UngrabMouse: { + m_lastEvent = event; ++ handleUngrab(); + break; + } + case QEvent::Wheel: { +@@ -368,10 +369,12 @@ void MouseEventListener::touchUngrabEvent() + + void MouseEventListener::handleUngrab() + { +- m_pressAndHoldTimer->stop(); ++ if (m_pressed) { ++ m_pressAndHoldTimer->stop(); + +- m_pressed = false; +- emit pressedChanged(); ++ m_pressed = false; ++ emit pressedChanged(); + +- emit canceled(); ++ emit canceled(); ++ } + } +-- +2.13.0 + diff --git a/kdeclarative-5.34.0.tar.xz b/kdeclarative-5.34.0.tar.xz deleted file mode 100644 index e33f626..0000000 --- a/kdeclarative-5.34.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e29faa82dd82434add4aa6c3d57f11c892e5a21905cd46d3e7fb8761ae18d2d5 -size 169124 diff --git a/kdeclarative-5.35.0.tar.xz b/kdeclarative-5.35.0.tar.xz new file mode 100644 index 0000000..e6074fd --- /dev/null +++ b/kdeclarative-5.35.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea619bf8da67d7b9caff3bc07bb645163fb47ae373eb5b22e2cbc0de4050f271 +size 2688476 diff --git a/kdeclarative.changes b/kdeclarative.changes index aeace73..4255132 100644 --- a/kdeclarative.changes +++ b/kdeclarative.changes @@ -1,3 +1,24 @@ +------------------------------------------------------------------- +Sat Jun 17 10:20:31 UTC 2017 - fabian@ritter-vogt.de + +- Add upstream patch to account for behavioural change in Qt 5.8+ + regarding ungrab events: + * 0001-Don-t-rely-on-QQuickWindow-delivering-QEvent-Ungrab-.patch + +------------------------------------------------------------------- +Sun Jun 11 09:27:42 CEST 2017 - lbeltrame@kde.org + +- Update to 5.35.0 + * New feature release + * For more details please see: + * https://www.kde.org/announcements/kde-frameworks-5.35.0.php +- Changes since 5.34.0: + * Consistently emit MouseEventListener::pressed signal + * Use explicit flag constructor instead of nullptr + * Don't leak MimeData object (kde#380270) + * API Dox: note forwarding CamelCase files as class headers + * API Dox: add some non-empty class/namespace docs where missing + ------------------------------------------------------------------- Mon May 15 13:53:13 CEST 2017 - fabian@ritter-vogt.de diff --git a/kdeclarative.spec b/kdeclarative.spec index 78e23cc..dcb3cd9 100644 --- a/kdeclarative.spec +++ b/kdeclarative.spec @@ -18,11 +18,19 @@ %bcond_without lang %define lname libKF5Declarative5 -%define _tar_path 5.34 +%define _tar_path 5.35 Name: kdeclarative -Version: 5.34.0 +Version: 5.35.0 Release: 0 %define kf5_version %{version} +Summary: Integration of QML and KDE workspaces +License: LGPL-2.1+ +Group: System/GUI/KDE +Url: http://www.kde.org +Source: http://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz +Source1: baselibs.conf +# PATCH-FIX-UPSTREAM +Patch100: 0001-Don-t-rely-on-QQuickWindow-delivering-QEvent-Ungrab-.patch BuildRequires: cmake >= 3.0 BuildRequires: extra-cmake-modules >= %{_tar_path} BuildRequires: fdupes @@ -43,12 +51,6 @@ BuildRequires: cmake(Qt5Gui) >= 5.6.0 BuildRequires: cmake(Qt5Qml) >= 5.6.0 BuildRequires: cmake(Qt5Quick) >= 5.6.0 BuildRequires: cmake(Qt5Test) >= 5.6.0 -Summary: Integration of QML and KDE workspaces -License: LGPL-2.1+ -Group: System/GUI/KDE -Url: http://www.kde.org -Source: http://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz -Source1: baselibs.conf BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -115,6 +117,7 @@ Development files. %lang_package -n %lname %prep %setup -q +%patch100 -p1 %build %cmake_kf5 -d build