1 |
commit: 79ed50f28c3c915c71608be59d6b1fd7b326d814 |
2 |
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat May 29 20:12:57 2021 +0000 |
4 |
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat May 29 21:16:21 2021 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=79ed50f2 |
7 |
|
8 |
kde-plasma/breeze: Fix splitter proxy |
9 |
|
10 |
Upstream commit f99b7ef621c9c69544158d245699fd8104db6753 |
11 |
|
12 |
See also: |
13 |
https://mail.kde.org/pipermail/distributions/2021-May/001012.html |
14 |
|
15 |
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=436473 |
16 |
Package-Manager: Portage-3.0.19, Repoman-3.0.3 |
17 |
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> |
18 |
|
19 |
kde-plasma/breeze/breeze-5.21.5-r1.ebuild | 53 ++++++++++++++++++++++ |
20 |
.../files/breeze-5.21.5-fix-splitter-proxy.patch | 50 ++++++++++++++++++++ |
21 |
2 files changed, 103 insertions(+) |
22 |
|
23 |
diff --git a/kde-plasma/breeze/breeze-5.21.5-r1.ebuild b/kde-plasma/breeze/breeze-5.21.5-r1.ebuild |
24 |
new file mode 100644 |
25 |
index 00000000000..c87f6e948b9 |
26 |
--- /dev/null |
27 |
+++ b/kde-plasma/breeze/breeze-5.21.5-r1.ebuild |
28 |
@@ -0,0 +1,53 @@ |
29 |
+# Copyright 1999-2021 Gentoo Authors |
30 |
+# Distributed under the terms of the GNU General Public License v2 |
31 |
+ |
32 |
+EAPI=7 |
33 |
+ |
34 |
+KFMIN=5.82.0 |
35 |
+PVCUT=$(ver_cut 1-3) |
36 |
+QTMIN=5.15.2 |
37 |
+inherit ecm kde.org |
38 |
+ |
39 |
+DESCRIPTION="Breeze visual style for the Plasma desktop" |
40 |
+HOMEPAGE="https://invent.kde.org/plasma/breeze" |
41 |
+ |
42 |
+LICENSE="GPL-2" # TODO: CHECK |
43 |
+SLOT="5" |
44 |
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86" |
45 |
+IUSE="X" |
46 |
+ |
47 |
+RDEPEND=" |
48 |
+ >=dev-qt/qtdbus-${QTMIN}:5 |
49 |
+ >=dev-qt/qtdeclarative-${QTMIN}:5 |
50 |
+ >=dev-qt/qtgui-${QTMIN}:5 |
51 |
+ >=dev-qt/qtwidgets-${QTMIN}:5 |
52 |
+ >=dev-qt/qtx11extras-${QTMIN}:5 |
53 |
+ >=kde-frameworks/frameworkintegration-${KFMIN}:5 |
54 |
+ >=kde-frameworks/kcmutils-${KFMIN}:5 |
55 |
+ >=kde-frameworks/kconfig-${KFMIN}:5 |
56 |
+ >=kde-frameworks/kconfigwidgets-${KFMIN}:5 |
57 |
+ >=kde-frameworks/kcoreaddons-${KFMIN}:5 |
58 |
+ >=kde-frameworks/kguiaddons-${KFMIN}:5 |
59 |
+ >=kde-frameworks/ki18n-${KFMIN}:5 |
60 |
+ >=kde-frameworks/kiconthemes-${KFMIN}:5 |
61 |
+ >=kde-frameworks/kwidgetsaddons-${KFMIN}:5 |
62 |
+ >=kde-frameworks/kwindowsystem-${KFMIN}:5 |
63 |
+ >=kde-plasma/kdecoration-${PVCUT}:5 |
64 |
+ X? ( x11-libs/libxcb ) |
65 |
+" |
66 |
+DEPEND="${RDEPEND} |
67 |
+ >=kde-frameworks/kpackage-${KFMIN}:5 |
68 |
+" |
69 |
+PDEPEND=" |
70 |
+ >=kde-frameworks/breeze-icons-${KFMIN}:5 |
71 |
+ >=kde-plasma/kde-cli-tools-${PVCUT}:5 |
72 |
+" |
73 |
+ |
74 |
+PATCHES=( "${FILESDIR}/${P}-fix-splitter-proxy.patch" ) |
75 |
+ |
76 |
+src_configure() { |
77 |
+ local mycmakeargs=( |
78 |
+ $(cmake_use_find_package X XCB) |
79 |
+ ) |
80 |
+ ecm_src_configure |
81 |
+} |
82 |
|
83 |
diff --git a/kde-plasma/breeze/files/breeze-5.21.5-fix-splitter-proxy.patch b/kde-plasma/breeze/files/breeze-5.21.5-fix-splitter-proxy.patch |
84 |
new file mode 100644 |
85 |
index 00000000000..52646721a4b |
86 |
--- /dev/null |
87 |
+++ b/kde-plasma/breeze/files/breeze-5.21.5-fix-splitter-proxy.patch |
88 |
@@ -0,0 +1,50 @@ |
89 |
+From f99b7ef621c9c69544158d245699fd8104db6753 Mon Sep 17 00:00:00 2001 |
90 |
+From: Fabian Vogt <fabian@×××××××××××.de> |
91 |
+Date: Sat, 15 May 2021 17:45:54 +0200 |
92 |
+Subject: [PATCH] Fix informing the underlying widget when leaving |
93 |
+ SplitterProxy |
94 |
+ |
95 |
+While the SplitterProxy is active, it intercepts all relevant events, so that |
96 |
+the underlying widget still thinks it's in the same "on splitter" state. When |
97 |
+the SplitterProxy is left, the underlying widget is sent a HoverLeave/HoverMove |
98 |
+event to make it aware of the new current cursor position. Without this, it |
99 |
+doesn't know that it's not supposed to be in the "on splitter" state, and when |
100 |
+it regains focus it just re-activates the SplitterProxy at the current cursor |
101 |
+position. |
102 |
+ |
103 |
+This was broken by accident in d201a1f187 ("Fix SplitterProxy not clearing |
104 |
+when above another QSplitterHandle"), which moved the hide() call past the |
105 |
+call to QCoreApplication::sendEvent. Previously that made isVisible() false, |
106 |
+which also prevented the interception of the HoverLeave/HoverMove events. |
107 |
+ |
108 |
+BUG: 436473 |
109 |
+--- |
110 |
+ kstyle/breezesplitterproxy.cpp | 11 +++++++---- |
111 |
+ 1 file changed, 7 insertions(+), 4 deletions(-) |
112 |
+ |
113 |
+diff --git a/kstyle/breezesplitterproxy.cpp b/kstyle/breezesplitterproxy.cpp |
114 |
+index 0cf5685f..d4db407b 100644 |
115 |
+--- a/kstyle/breezesplitterproxy.cpp |
116 |
++++ b/kstyle/breezesplitterproxy.cpp |
117 |
+@@ -341,11 +341,14 @@ namespace Breeze |
118 |
+ // send hover event |
119 |
+ if( _splitter ) |
120 |
+ { |
121 |
+- QHoverEvent hoverEvent( |
122 |
+- qobject_cast<QSplitterHandle*>(_splitter.data()) ? QEvent::HoverLeave : QEvent::HoverMove, |
123 |
+- _splitter.data()->mapFromGlobal(QCursor::pos()), _hook); |
124 |
+- QCoreApplication::sendEvent( _splitter.data(), &hoverEvent ); |
125 |
++ // SplitterProxy intercepts HoverLeave/HoverMove events to _splitter, |
126 |
++ // but this is meant to reach it directly. Unset _splitter to stop interception. |
127 |
++ auto splitter = _splitter; |
128 |
+ _splitter.clear(); |
129 |
++ QHoverEvent hoverEvent( |
130 |
++ qobject_cast<QSplitterHandle*>(splitter.data()) ? QEvent::HoverLeave : QEvent::HoverMove, |
131 |
++ splitter.data()->mapFromGlobal(QCursor::pos()), _hook); |
132 |
++ QCoreApplication::sendEvent( splitter.data(), &hoverEvent ); |
133 |
+ } |
134 |
+ |
135 |
+ // kill timer if any |
136 |
+-- |
137 |
+GitLab |
138 |
+ |