Gentoo Archives: gentoo-commits

From: Andreas Sturmlechner <asturm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: kde-frameworks/kwidgetsaddons/, kde-frameworks/kwidgetsaddons/files/
Date: Tue, 23 Nov 2021 14:59:38
Message-Id: 1637679550.0f5e823650417f6d4598d24407c6b6de8983906c.asturm@gentoo
1 commit: 0f5e823650417f6d4598d24407c6b6de8983906c
2 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
3 AuthorDate: Tue Nov 23 11:22:02 2021 +0000
4 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
5 CommitDate: Tue Nov 23 14:59:10 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0f5e8236
7
8 kde-frameworks/kwidgetsaddons: Fix conflicts w/ actions w/ Alt+X shortcuts
9
10 KDE-bug: https://bugs.kde.org/show_bug.cgi?id=444990
11 Upstream commit 294fe8ddc2f10d0a783bf9b80769c31ecc5922b1
12
13 Package-Manager: Portage-3.0.28, Repoman-3.0.3
14 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
15
16 ....88.0-kacceleratormanager-alt-x-shortcuts.patch | 149 +++++++++++++++++++++
17 .../kwidgetsaddons/kwidgetsaddons-5.88.0-r1.ebuild | 38 ++++++
18 2 files changed, 187 insertions(+)
19
20 diff --git a/kde-frameworks/kwidgetsaddons/files/kwidgetsaddons-5.88.0-kacceleratormanager-alt-x-shortcuts.patch b/kde-frameworks/kwidgetsaddons/files/kwidgetsaddons-5.88.0-kacceleratormanager-alt-x-shortcuts.patch
21 new file mode 100644
22 index 000000000000..6e7ca9e47298
23 --- /dev/null
24 +++ b/kde-frameworks/kwidgetsaddons/files/kwidgetsaddons-5.88.0-kacceleratormanager-alt-x-shortcuts.patch
25 @@ -0,0 +1,149 @@
26 +From 294fe8ddc2f10d0a783bf9b80769c31ecc5922b1 Mon Sep 17 00:00:00 2001
27 +From: Albert Astals Cid <aacid@×××.org>
28 +Date: Fri, 5 Nov 2021 23:23:59 +0100
29 +Subject: [PATCH] KAcceleratorManager: Take into account actions with Alt+X
30 + shortcuts
31 +
32 +We need to mark those X labels as used, otherwise the accelerator
33 +manager may decide to use X for an accelerator and when pressing Alt+X
34 +we will have a conflict
35 +
36 +BUGS: 444990
37 +---
38 + autotests/kacceleratormanagertest.cpp | 21 +++++++++++++++++++
39 + src/kacceleratormanager.cpp | 30 ++++++++++++++++++++-------
40 + src/kacceleratormanager_p.h | 4 ++--
41 + 3 files changed, 46 insertions(+), 9 deletions(-)
42 +
43 +diff --git a/autotests/kacceleratormanagertest.cpp b/autotests/kacceleratormanagertest.cpp
44 +index 3fc07928..2bdc4f74 100644
45 +--- a/autotests/kacceleratormanagertest.cpp
46 ++++ b/autotests/kacceleratormanagertest.cpp
47 +@@ -8,6 +8,7 @@
48 + #include <kacceleratormanager.h>
49 +
50 + #include <QMenu>
51 ++#include <QPushButton>
52 + #include <QTest>
53 +
54 + #define QSL QStringLiteral
55 +@@ -75,6 +76,26 @@ private Q_SLOTS:
56 + QCOMPARE(texts, expectedTexts);
57 + }
58 +
59 ++ void testExistingActionsShortcutsAreTakenIntoAccount()
60 ++ {
61 ++ std::unique_ptr<QWidget> w(new QWidget());
62 ++
63 ++ QPushButton *pb = new QPushButton(QSL("Open"), w.get());
64 ++
65 ++ KAcceleratorManager::manage(w.get());
66 ++ QCOMPARE(pb->text(), QSL("&Open"));
67 ++
68 ++ delete pb;
69 ++ pb = new QPushButton(QSL("Open"), w.get());
70 ++
71 ++ QAction *a = new QAction();
72 ++ a->setShortcut(QSL("Alt+O"));
73 ++ w->addAction(a);
74 ++
75 ++ KAcceleratorManager::manage(w.get());
76 ++ QCOMPARE(pb->text(), QSL("O&pen"));
77 ++ }
78 ++
79 + void testActionIconTexts_data()
80 + {
81 + QTest::addColumn<QStringList>("initialTexts");
82 +diff --git a/src/kacceleratormanager.cpp b/src/kacceleratormanager.cpp
83 +index 66d596d3..2f7b1879 100644
84 +--- a/src/kacceleratormanager.cpp
85 ++++ b/src/kacceleratormanager.cpp
86 +@@ -94,9 +94,8 @@ void KAcceleratorManagerPrivate::manage(QWidget *widget)
87 +
88 + Item *root = new Item;
89 +
90 +- manageWidget(widget, root);
91 +-
92 + QString used;
93 ++ manageWidget(widget, root, used);
94 + calculateAccelerators(root, used);
95 + delete root;
96 + }
97 +@@ -175,7 +174,7 @@ void KAcceleratorManagerPrivate::calculateAccelerators(Item *item, QString &used
98 + }
99 + }
100 +
101 +-void KAcceleratorManagerPrivate::traverseChildren(QWidget *widget, Item *item)
102 ++void KAcceleratorManagerPrivate::traverseChildren(QWidget *widget, Item *item, QString &used)
103 + {
104 + const QList<QWidget *> childList = widget->findChildren<QWidget *>();
105 + for (QWidget *w : childList) {
106 +@@ -192,12 +191,29 @@ void KAcceleratorManagerPrivate::traverseChildren(QWidget *widget, Item *item)
107 + continue;
108 + }
109 +
110 +- manageWidget(w, item);
111 ++ manageWidget(w, item, used);
112 + }
113 + }
114 +
115 +-void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item)
116 ++void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item, QString &used)
117 + {
118 ++ // If the widget has any action whose shortcuts contain keystrokes in the
119 ++ // form of Alt+X we need to mark X as used, otherwise we may assign it as accelerator
120 ++ // and there will be a conflict when trying to use it
121 ++ const QList<QAction *> widgetActions = w->actions();
122 ++ for (QAction *action : widgetActions) {
123 ++ const QList<QKeySequence> actionShortcuts = action->shortcuts();
124 ++ for (const QKeySequence &sequence : actionShortcuts) {
125 ++ const QString sequenceAsText = sequence.toString(QKeySequence::PortableText);
126 ++ const QStringList splitSequence = sequenceAsText.split(QStringLiteral(", "));
127 ++ for (const QString &shortcut : splitSequence) {
128 ++ if (shortcut.length() == 5 && shortcut.startsWith(QStringLiteral("Alt+"))) {
129 ++ used.append(shortcut.right(1));
130 ++ }
131 ++ }
132 ++ }
133 ++ }
134 ++
135 + // first treat the special cases
136 +
137 + QTabBar *tabBar = qobject_cast<QTabBar *>(w);
138 +@@ -247,7 +263,7 @@ void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item)
139 + }
140 +
141 + if (w->inherits("KUrlRequester")) {
142 +- traverseChildren(w, item);
143 ++ traverseChildren(w, item, used);
144 + return;
145 + }
146 +
147 +@@ -316,7 +332,7 @@ void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item)
148 + item->addChild(i);
149 + }
150 + }
151 +- traverseChildren(w, item);
152 ++ traverseChildren(w, item, used);
153 + }
154 +
155 + void KAcceleratorManagerPrivate::manageTabBar(QTabBar *bar, Item *item)
156 +diff --git a/src/kacceleratormanager_p.h b/src/kacceleratormanager_p.h
157 +index a92d04ab..04926476 100644
158 +--- a/src/kacceleratormanager_p.h
159 ++++ b/src/kacceleratormanager_p.h
160 +@@ -227,9 +227,9 @@ public:
161 + typedef QList<Item *> ItemList;
162 +
163 + private:
164 +- static void traverseChildren(QWidget *widget, Item *item);
165 ++ static void traverseChildren(QWidget *widget, Item *item, QString &used);
166 +
167 +- static void manageWidget(QWidget *widget, Item *item);
168 ++ static void manageWidget(QWidget *widget, Item *item, QString &used);
169 + static void manageMenuBar(QMenuBar *mbar, Item *item);
170 + static void manageTabBar(QTabBar *bar, Item *item);
171 + static void manageDockWidget(QDockWidget *dock, Item *item);
172 +--
173 +GitLab
174 +
175
176 diff --git a/kde-frameworks/kwidgetsaddons/kwidgetsaddons-5.88.0-r1.ebuild b/kde-frameworks/kwidgetsaddons/kwidgetsaddons-5.88.0-r1.ebuild
177 new file mode 100644
178 index 000000000000..cb0733f838d6
179 --- /dev/null
180 +++ b/kde-frameworks/kwidgetsaddons/kwidgetsaddons-5.88.0-r1.ebuild
181 @@ -0,0 +1,38 @@
182 +# Copyright 1999-2021 Gentoo Authors
183 +# Distributed under the terms of the GNU General Public License v2
184 +
185 +EAPI=8
186 +
187 +ECM_DESIGNERPLUGIN="true"
188 +QTMIN=5.15.2
189 +VIRTUALX_REQUIRED="test"
190 +inherit ecm kde.org
191 +
192 +DESCRIPTION="An assortment of high-level widgets for common tasks"
193 +LICENSE="LGPL-2.1+"
194 +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
195 +IUSE="nls"
196 +
197 +DEPEND="
198 + >=dev-qt/qtgui-${QTMIN}:5
199 + >=dev-qt/qtwidgets-${QTMIN}:5
200 +"
201 +RDEPEND="${DEPEND}"
202 +BDEPEND="
203 + nls? ( >=dev-qt/linguist-tools-${QTMIN}:5 )
204 +"
205 +
206 +PATCHES=( "${FILESDIR}/${P}-kacceleratormanager-alt-x-shortcuts.patch" ) # KDE-bug 444990
207 +
208 +src_configure() {
209 + local mycmakeargs=(
210 + -DCMAKE_DISABLE_FIND_PACKAGE_PythonModuleGeneration=ON # bug 746866
211 + )
212 + ecm_src_configure
213 +}
214 +
215 +src_test() {
216 + # bug 650216, 653186, 697866, 808216
217 + local myctestargs=( -E "(kdatecomboboxtest|ksqueezedtextlabelautotest|ktwofingertaptest|ktwofingerswipetest)" )
218 + ecm_src_test
219 +}