Accepting request 559646 from KDE:Frameworks5

- Dropped patches, now upstream:
  - MouseEventListener-Allow-accepting-mouse-event.patch

- Update to 5.41.0
  * New feature release
  * For more details please see:
  * https://www.kde.org/announcements/kde-frameworks-5.41.0.php
- Changes since 5.40.0:
  * Make it compile on windows
  * make it compile with QT_NO_CAST_FROM_ASCII/QT_NO_CAST_FROM_BYTEARRAY
  * [MouseEventListener] Allow accepting mouse event
  * use a single QML engine
  * add some metadata

OBS-URL: https://build.opensuse.org/request/show/559646
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/kdeclarative?expand=0&rev=50
This commit is contained in:
Dominique Leuenberger 2018-01-09 13:46:43 +00:00 committed by Git OBS Bridge
commit 796291b0c7
5 changed files with 25 additions and 155 deletions

View File

@ -1,147 +0,0 @@
From e2795e9472333d5e8b2ce70017ca705474ebe3d2 Mon Sep 17 00:00:00 2001
From: Kai Uwe Broulik <kde@privat.broulik.de>
Date: Thu, 23 Nov 2017 11:04:01 +0100
Subject: [MouseEventListener] Allow accepting mouse event
This will keep the event from propagating. Accepting a press event will also not result in
clicked or pressAndHold being handled.
In Qt 5.10 event propagation changed resulting in FolderView opening both the item context menu
and containment context menu. Imho this actually makes sense since we never accepted the
mouse event there.
Differential Revision: https://phabricator.kde.org/D8864
---
.../kquickcontrolsaddons/mouseeventlistener.cpp | 30 ++++++++++++++++++++++
.../kquickcontrolsaddons/mouseeventlistener.h | 13 ++++++++++
2 files changed, 43 insertions(+)
diff --git a/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp b/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp
index 0b8d981..10aa2f7 100644
--- a/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp
+++ b/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.cpp
@@ -171,6 +171,11 @@ void MouseEventListener::mousePressEvent(QMouseEvent *me)
emit pressed(&dme);
emit pressedChanged();
+ if (dme.isAccepted()) {
+ me->setAccepted(true);
+ return;
+ }
+
m_pressAndHoldTimer->start(QGuiApplication::styleHints()->mousePressAndHoldInterval());
}
@@ -187,6 +192,10 @@ void MouseEventListener::mouseMoveEvent(QMouseEvent *me)
KDeclarativeMouseEvent dme(me->pos().x(), me->pos().y(), me->screenPos().x(), me->screenPos().y(), me->button(), me->buttons(), me->modifiers(), screenForGlobalPos(me->globalPos()));
emit positionChanged(&dme);
+
+ if (dme.isAccepted()) {
+ me->setAccepted(true);
+ }
}
void MouseEventListener::mouseReleaseEvent(QMouseEvent *me)
@@ -205,6 +214,10 @@ void MouseEventListener::mouseReleaseEvent(QMouseEvent *me)
emit clicked(&dme);
m_pressAndHoldTimer->stop();
}
+
+ if (dme.isAccepted()) {
+ me->setAccepted(true);
+ }
}
void MouseEventListener::wheelEvent(QWheelEvent *we)
@@ -260,7 +273,12 @@ bool MouseEventListener::childMouseEventFilter(QQuickItem *item, QEvent *event)
emit pressed(&dme);
emit pressedChanged();
+ if (dme.isAccepted()) {
+ return true;
+ }
+
m_pressAndHoldTimer->start(QGuiApplication::styleHints()->mousePressAndHoldInterval());
+
break;
}
case QEvent::HoverMove: {
@@ -280,6 +298,10 @@ bool MouseEventListener::childMouseEventFilter(QQuickItem *item, QEvent *event)
KDeclarativeMouseEvent dme(myPos.x(), myPos.y(), screenPos.x(), screenPos.y(), Qt::NoButton, Qt::NoButton, he->modifiers(), nullptr);
//qDebug() << "positionChanged..." << dme.x() << dme.y();
emit positionChanged(&dme);
+
+ if (dme.isAccepted()) {
+ return true;
+ }
break;
}
case QEvent::MouseMove: {
@@ -304,6 +326,10 @@ bool MouseEventListener::childMouseEventFilter(QQuickItem *item, QEvent *event)
m_pressAndHoldEvent = new KDeclarativeMouseEvent(myPos.x(), myPos.y(), me->screenPos().x(), me->screenPos().y(), me->button(), me->buttons(), me->modifiers(), screenForGlobalPos(me->globalPos()));
}
emit positionChanged(&dme);
+
+ if (dme.isAccepted()) {
+ return true;
+ }
break;
}
case QEvent::MouseButtonRelease: {
@@ -321,6 +347,10 @@ bool MouseEventListener::childMouseEventFilter(QQuickItem *item, QEvent *event)
emit clicked(&dme);
m_pressAndHoldTimer->stop();
}
+
+ if (dme.isAccepted()) {
+ return true;
+ }
break;
}
case QEvent::UngrabMouse: {
diff --git a/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.h b/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.h
index 2799fda..c34ca25 100644
--- a/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.h
+++ b/src/qmlcontrols/kquickcontrolsaddons/mouseeventlistener.h
@@ -43,6 +43,7 @@ class KDeclarativeMouseEvent : public QObject
Q_PROPERTY(Qt::MouseButtons buttons READ buttons)
Q_PROPERTY(Qt::KeyboardModifiers modifiers READ modifiers)
Q_PROPERTY(QScreen* screen READ screen CONSTANT)
+ Q_PROPERTY(bool accepted READ isAccepted WRITE setAccepted NOTIFY acceptedChanged)
public:
KDeclarativeMouseEvent(int x, int y, int screenX, int screenY,
@@ -69,10 +70,21 @@ public:
Qt::KeyboardModifiers modifiers() const { return m_modifiers; }
QScreen* screen() const { return m_screen; }
+ bool isAccepted() const { return m_accepted; }
+ void setAccepted(bool accepted) {
+ if (m_accepted != accepted) {
+ m_accepted = accepted;
+ emit acceptedChanged();
+ }
+ }
+
// only for internal usage
void setX(int x) { m_x = x; }
void setY(int y) { m_y = y; }
+Q_SIGNALS:
+ void acceptedChanged();
+
private:
int m_x;
int m_y;
@@ -82,6 +94,7 @@ private:
Qt::MouseButtons m_buttons;
Qt::KeyboardModifiers m_modifiers;
QScreen *m_screen;
+ bool m_accepted = false;
};
class KDeclarativeWheelEvent : public QObject
--
cgit v0.11.2

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a60142c4c1b14756196ebb90db63fd1214efe8ed921afa8b6b956caed23bd783
size 167988

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ea49d799f2773939a1d704a7d8f6f43dfc27d07090ab99d63055f6d3c8cfaec3
size 168424

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Wed Dec 20 06:37:45 UTC 2017 - lbeltrame@kde.org
- Dropped patches, now upstream:
- MouseEventListener-Allow-accepting-mouse-event.patch
-------------------------------------------------------------------
Mon Dec 18 16:55:36 UTC 2017 - wbauer@tmo.at
@ -5,6 +11,20 @@ Mon Dec 18 16:55:36 UTC 2017 - wbauer@tmo.at
it possible to fix double context menu issue with Qt 5.10 in
plasma5-desktop (kde#387199)
-------------------------------------------------------------------
Sun Dec 17 09:43:48 CET 2017 - lbeltrame@kde.org
- Update to 5.41.0
* New feature release
* For more details please see:
* https://www.kde.org/announcements/kde-frameworks-5.41.0.php
- Changes since 5.40.0:
* Make it compile on windows
* make it compile with QT_NO_CAST_FROM_ASCII/QT_NO_CAST_FROM_BYTEARRAY
* [MouseEventListener] Allow accepting mouse event
* use a single QML engine
* add some metadata
-------------------------------------------------------------------
Mon Nov 13 07:01:13 CET 2017 - lbeltrame@kde.org

View File

@ -18,13 +18,13 @@
%bcond_without lang
%define lname libKF5Declarative5
%define _tar_path 5.40
%define _tar_path 5.41
# Full KF5 version (e.g. 5.33.0)
%{!?_kf5_version: %global _kf5_version %{version}}
# Last major and minor KF5 version (e.g. 5.33)
%{!?_kf5_bugfix_version: %global _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')}
Name: kdeclarative
Version: 5.40.0
Version: 5.41.0
Release: 0
%define kf5_version %{version}
Summary: Integration of QML and KDE workspaces
@ -36,8 +36,6 @@ 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
Patch: MouseEventListener-Allow-accepting-mouse-event.patch
BuildRequires: cmake >= 3.0
BuildRequires: extra-cmake-modules >= %{_kf5_bugfix_version}
BuildRequires: fdupes
@ -124,7 +122,6 @@ Development files.
%lang_package -n %lname
%prep
%setup -q
%patch -p1
%build
%cmake_kf5 -d build