From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: kde-frameworks/kxmlgui/files/, kde-frameworks/kxmlgui/
Date: Wed, 30 Jan 2019 17:28:14 +0000 (UTC) [thread overview]
Message-ID: <1548867820.547bdf84d94ecfcca5aa09cc2ebd6d1e8fc455ac.asturm@gentoo> (raw)
commit: 547bdf84d94ecfcca5aa09cc2ebd6d1e8fc455ac
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Jan 30 17:03:40 2019 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Jan 30 17:03:40 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=547bdf84
kde-frameworks/kxmlgui: Fix Qt5 app artifacts w/ kcheckaccelerators
Fixes long-standing bug in applications under Plasma-5 not linking to KXmlGui,
as seen in QtCreator and Clementine e.g.
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=337491
Package-Manager: Portage-2.3.59, Repoman-2.3.12
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
.../files/kxmlgui-5.54.0-kcheckaccelerators.patch | 79 ++++++++++++++++++++++
kde-frameworks/kxmlgui/kxmlgui-5.54.0-r1.ebuild | 54 +++++++++++++++
2 files changed, 133 insertions(+)
diff --git a/kde-frameworks/kxmlgui/files/kxmlgui-5.54.0-kcheckaccelerators.patch b/kde-frameworks/kxmlgui/files/kxmlgui-5.54.0-kcheckaccelerators.patch
new file mode 100644
index 00000000000..0882d5f09f9
--- /dev/null
+++ b/kde-frameworks/kxmlgui/files/kxmlgui-5.54.0-kcheckaccelerators.patch
@@ -0,0 +1,79 @@
+From 02b523bad09aab062355e46771889b0f3709692f Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Sat, 12 Jan 2019 18:39:33 +0100
+Subject: Make KCheckAccelerators less invasive for apps that don't directly
+ link to KXmlGui
+
+Summary: BUGS: 337491
+
+Test Plan:
+Ran qtcreator and it no longer has the & in Details
+Added some debug and checked that okular still gets the code called
+
+Reviewers: anthonyfieroni
+
+Reviewed By: anthonyfieroni
+
+Subscribers: davidedmundson, anthonyfieroni, kde-frameworks-devel
+
+Tags: #frameworks
+
+Differential Revision: https://phabricator.kde.org/D18204
+---
+ src/kcheckaccelerators.cpp | 38 ++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 36 insertions(+), 2 deletions(-)
+
+diff --git a/src/kcheckaccelerators.cpp b/src/kcheckaccelerators.cpp
+index 13fc012..e08447d 100644
+--- a/src/kcheckaccelerators.cpp
++++ b/src/kcheckaccelerators.cpp
+@@ -80,10 +80,44 @@ public Q_SLOTS:
+
+ static void startupFunc()
+ {
+- // Call initiateIfNeeded once we're in the event loop
+- // This is to prevent using KSharedConfig before main() can set the app name
++ // Static because in some cases this is called multiple times
++ // but if an application had any of the bad cases we always want
++ // to skip the check
++ static bool doCheckAccelerators = true;
++
++ if (!doCheckAccelerators) {
++ return;
++ }
++
+ QCoreApplication *app = QCoreApplication::instance();
++ if (!app) {
++ // We're being loaded by something that doesn't have a QCoreApplication
++ // this would probably crash at some later point since we do use qApp->
++ // quite a lot, so skip the magic
++ doCheckAccelerators = false;
++ return;
++ }
++
++ if (!QCoreApplication::startingUp()) {
++ // If the app has already started, this means we're not being run as part of
++ // qt_call_pre_routines, which most probably means that we're being run as part
++ // of KXmlGui being loaded as part of some plugin of the app, so don't
++ // do any magic
++ doCheckAccelerators = false;
++ return;
++ }
++
++ if (!QCoreApplication::eventDispatcher()) {
++ // We are called with event dispatcher being null when KXmlGui is being loaded
++ // through plasma-integration instead of being linked to the app (i.e. QtCreator vs Okular)
++ // For apps that don't link directly to KXmlGui do not do the accelerator magic
++ doCheckAccelerators = false;
++ return;
++ }
++
+ KCheckAcceleratorsInitializer *initializer = new KCheckAcceleratorsInitializer(app);
++ // Call initiateIfNeeded once we're in the event loop
++ // This is to prevent using KSharedConfig before main() can set the app name
+ QMetaObject::invokeMethod(initializer, "initiateIfNeeded", Qt::QueuedConnection);
+ }
+
+--
+cgit v1.1
+
diff --git a/kde-frameworks/kxmlgui/kxmlgui-5.54.0-r1.ebuild b/kde-frameworks/kxmlgui/kxmlgui-5.54.0-r1.ebuild
new file mode 100644
index 00000000000..eac5c3cc9e2
--- /dev/null
+++ b/kde-frameworks/kxmlgui/kxmlgui-5.54.0-r1.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+VIRTUALX_REQUIRED="test"
+inherit kde5
+
+DESCRIPTION="Framework for managing menu and toolbar actions in an abstract way"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+LICENSE="LGPL-2+"
+IUSE="attica"
+
+# slot op: includes QtCore/private/qlocale_p.h
+RDEPEND="
+ $(add_frameworks_dep kconfig)
+ $(add_frameworks_dep kconfigwidgets)
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep kglobalaccel)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep kiconthemes)
+ $(add_frameworks_dep kitemviews)
+ $(add_frameworks_dep ktextwidgets)
+ $(add_frameworks_dep kwidgetsaddons)
+ $(add_frameworks_dep kwindowsystem)
+ $(add_qt_dep qtcore '' '' '5=')
+ $(add_qt_dep qtdbus)
+ $(add_qt_dep qtgui)
+ $(add_qt_dep qtnetwork 'ssl')
+ $(add_qt_dep qtprintsupport)
+ $(add_qt_dep qtwidgets)
+ $(add_qt_dep qtxml)
+ attica? ( $(add_frameworks_dep attica) )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=( "${FILESDIR}/${P}-kcheckaccelerators.patch" )
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_find_package attica KF5Attica)
+ )
+
+ kde5_src_configure
+}
+
+src_test() {
+ # Files are missing; whatever. Bugs 650290, 668198
+ local myctestargs=(
+ -E "(ktoolbar_unittest|kxmlgui_unittest)"
+ )
+
+ kde5_src_test
+}
next reply other threads:[~2019-01-30 17:28 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-30 17:28 Andreas Sturmlechner [this message]
-- strict thread matches above, loose matches on Subject: below --
2020-12-29 19:54 [gentoo-commits] repo/gentoo:master commit in: kde-frameworks/kxmlgui/files/, kde-frameworks/kxmlgui/ Andreas Sturmlechner
2021-01-11 12:28 Andreas Sturmlechner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1548867820.547bdf84d94ecfcca5aa09cc2ebd6d1e8fc455ac.asturm@gentoo \
--to=asturm@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox