From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 6ADB0158003 for ; Tue, 23 Nov 2021 14:59:38 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 45E2EE086F; Tue, 23 Nov 2021 14:59:37 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id EC89EE0824 for ; Tue, 23 Nov 2021 14:59:36 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id BAD7C342E8F for ; Tue, 23 Nov 2021 14:59:35 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 6340E1C8 for ; Tue, 23 Nov 2021 14:59:34 +0000 (UTC) From: "Andreas Sturmlechner" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Andreas Sturmlechner" Message-ID: <1637679550.0f5e823650417f6d4598d24407c6b6de8983906c.asturm@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: kde-frameworks/kwidgetsaddons/, kde-frameworks/kwidgetsaddons/files/ X-VCS-Repository: repo/gentoo X-VCS-Files: kde-frameworks/kwidgetsaddons/files/kwidgetsaddons-5.88.0-kacceleratormanager-alt-x-shortcuts.patch kde-frameworks/kwidgetsaddons/kwidgetsaddons-5.88.0-r1.ebuild X-VCS-Directories: kde-frameworks/kwidgetsaddons/ kde-frameworks/kwidgetsaddons/files/ X-VCS-Committer: asturm X-VCS-Committer-Name: Andreas Sturmlechner X-VCS-Revision: 0f5e823650417f6d4598d24407c6b6de8983906c X-VCS-Branch: master Date: Tue, 23 Nov 2021 14:59:34 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 61d2ea21-aef6-4410-bb21-f55cd139e2bf X-Archives-Hash: e1bfb937bf80c4d76ae4e6bece80366f commit: 0f5e823650417f6d4598d24407c6b6de8983906c Author: Andreas Sturmlechner gentoo org> AuthorDate: Tue Nov 23 11:22:02 2021 +0000 Commit: Andreas Sturmlechner gentoo org> CommitDate: Tue Nov 23 14:59:10 2021 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0f5e8236 kde-frameworks/kwidgetsaddons: Fix conflicts w/ actions w/ Alt+X shortcuts KDE-bug: https://bugs.kde.org/show_bug.cgi?id=444990 Upstream commit 294fe8ddc2f10d0a783bf9b80769c31ecc5922b1 Package-Manager: Portage-3.0.28, Repoman-3.0.3 Signed-off-by: Andreas Sturmlechner gentoo.org> ....88.0-kacceleratormanager-alt-x-shortcuts.patch | 149 +++++++++++++++++++++ .../kwidgetsaddons/kwidgetsaddons-5.88.0-r1.ebuild | 38 ++++++ 2 files changed, 187 insertions(+) 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 new file mode 100644 index 000000000000..6e7ca9e47298 --- /dev/null +++ b/kde-frameworks/kwidgetsaddons/files/kwidgetsaddons-5.88.0-kacceleratormanager-alt-x-shortcuts.patch @@ -0,0 +1,149 @@ +From 294fe8ddc2f10d0a783bf9b80769c31ecc5922b1 Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid +Date: Fri, 5 Nov 2021 23:23:59 +0100 +Subject: [PATCH] KAcceleratorManager: Take into account actions with Alt+X + shortcuts + +We need to mark those X labels as used, otherwise the accelerator +manager may decide to use X for an accelerator and when pressing Alt+X +we will have a conflict + +BUGS: 444990 +--- + autotests/kacceleratormanagertest.cpp | 21 +++++++++++++++++++ + src/kacceleratormanager.cpp | 30 ++++++++++++++++++++------- + src/kacceleratormanager_p.h | 4 ++-- + 3 files changed, 46 insertions(+), 9 deletions(-) + +diff --git a/autotests/kacceleratormanagertest.cpp b/autotests/kacceleratormanagertest.cpp +index 3fc07928..2bdc4f74 100644 +--- a/autotests/kacceleratormanagertest.cpp ++++ b/autotests/kacceleratormanagertest.cpp +@@ -8,6 +8,7 @@ + #include + + #include ++#include + #include + + #define QSL QStringLiteral +@@ -75,6 +76,26 @@ private Q_SLOTS: + QCOMPARE(texts, expectedTexts); + } + ++ void testExistingActionsShortcutsAreTakenIntoAccount() ++ { ++ std::unique_ptr w(new QWidget()); ++ ++ QPushButton *pb = new QPushButton(QSL("Open"), w.get()); ++ ++ KAcceleratorManager::manage(w.get()); ++ QCOMPARE(pb->text(), QSL("&Open")); ++ ++ delete pb; ++ pb = new QPushButton(QSL("Open"), w.get()); ++ ++ QAction *a = new QAction(); ++ a->setShortcut(QSL("Alt+O")); ++ w->addAction(a); ++ ++ KAcceleratorManager::manage(w.get()); ++ QCOMPARE(pb->text(), QSL("O&pen")); ++ } ++ + void testActionIconTexts_data() + { + QTest::addColumn("initialTexts"); +diff --git a/src/kacceleratormanager.cpp b/src/kacceleratormanager.cpp +index 66d596d3..2f7b1879 100644 +--- a/src/kacceleratormanager.cpp ++++ b/src/kacceleratormanager.cpp +@@ -94,9 +94,8 @@ void KAcceleratorManagerPrivate::manage(QWidget *widget) + + Item *root = new Item; + +- manageWidget(widget, root); +- + QString used; ++ manageWidget(widget, root, used); + calculateAccelerators(root, used); + delete root; + } +@@ -175,7 +174,7 @@ void KAcceleratorManagerPrivate::calculateAccelerators(Item *item, QString &used + } + } + +-void KAcceleratorManagerPrivate::traverseChildren(QWidget *widget, Item *item) ++void KAcceleratorManagerPrivate::traverseChildren(QWidget *widget, Item *item, QString &used) + { + const QList childList = widget->findChildren(); + for (QWidget *w : childList) { +@@ -192,12 +191,29 @@ void KAcceleratorManagerPrivate::traverseChildren(QWidget *widget, Item *item) + continue; + } + +- manageWidget(w, item); ++ manageWidget(w, item, used); + } + } + +-void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item) ++void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item, QString &used) + { ++ // If the widget has any action whose shortcuts contain keystrokes in the ++ // form of Alt+X we need to mark X as used, otherwise we may assign it as accelerator ++ // and there will be a conflict when trying to use it ++ const QList widgetActions = w->actions(); ++ for (QAction *action : widgetActions) { ++ const QList actionShortcuts = action->shortcuts(); ++ for (const QKeySequence &sequence : actionShortcuts) { ++ const QString sequenceAsText = sequence.toString(QKeySequence::PortableText); ++ const QStringList splitSequence = sequenceAsText.split(QStringLiteral(", ")); ++ for (const QString &shortcut : splitSequence) { ++ if (shortcut.length() == 5 && shortcut.startsWith(QStringLiteral("Alt+"))) { ++ used.append(shortcut.right(1)); ++ } ++ } ++ } ++ } ++ + // first treat the special cases + + QTabBar *tabBar = qobject_cast(w); +@@ -247,7 +263,7 @@ void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item) + } + + if (w->inherits("KUrlRequester")) { +- traverseChildren(w, item); ++ traverseChildren(w, item, used); + return; + } + +@@ -316,7 +332,7 @@ void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item) + item->addChild(i); + } + } +- traverseChildren(w, item); ++ traverseChildren(w, item, used); + } + + void KAcceleratorManagerPrivate::manageTabBar(QTabBar *bar, Item *item) +diff --git a/src/kacceleratormanager_p.h b/src/kacceleratormanager_p.h +index a92d04ab..04926476 100644 +--- a/src/kacceleratormanager_p.h ++++ b/src/kacceleratormanager_p.h +@@ -227,9 +227,9 @@ public: + typedef QList ItemList; + + private: +- static void traverseChildren(QWidget *widget, Item *item); ++ static void traverseChildren(QWidget *widget, Item *item, QString &used); + +- static void manageWidget(QWidget *widget, Item *item); ++ static void manageWidget(QWidget *widget, Item *item, QString &used); + static void manageMenuBar(QMenuBar *mbar, Item *item); + static void manageTabBar(QTabBar *bar, Item *item); + static void manageDockWidget(QDockWidget *dock, Item *item); +-- +GitLab + diff --git a/kde-frameworks/kwidgetsaddons/kwidgetsaddons-5.88.0-r1.ebuild b/kde-frameworks/kwidgetsaddons/kwidgetsaddons-5.88.0-r1.ebuild new file mode 100644 index 000000000000..cb0733f838d6 --- /dev/null +++ b/kde-frameworks/kwidgetsaddons/kwidgetsaddons-5.88.0-r1.ebuild @@ -0,0 +1,38 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ECM_DESIGNERPLUGIN="true" +QTMIN=5.15.2 +VIRTUALX_REQUIRED="test" +inherit ecm kde.org + +DESCRIPTION="An assortment of high-level widgets for common tasks" +LICENSE="LGPL-2.1+" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" +IUSE="nls" + +DEPEND=" + >=dev-qt/qtgui-${QTMIN}:5 + >=dev-qt/qtwidgets-${QTMIN}:5 +" +RDEPEND="${DEPEND}" +BDEPEND=" + nls? ( >=dev-qt/linguist-tools-${QTMIN}:5 ) +" + +PATCHES=( "${FILESDIR}/${P}-kacceleratormanager-alt-x-shortcuts.patch" ) # KDE-bug 444990 + +src_configure() { + local mycmakeargs=( + -DCMAKE_DISABLE_FIND_PACKAGE_PythonModuleGeneration=ON # bug 746866 + ) + ecm_src_configure +} + +src_test() { + # bug 650216, 653186, 697866, 808216 + local myctestargs=( -E "(kdatecomboboxtest|ksqueezedtextlabelautotest|ktwofingertaptest|ktwofingerswipetest)" ) + ecm_src_test +}