Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kio for openSUSE:Factory checked in at 2021-12-06 23:59:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kio (Old) and /work/SRC/openSUSE:Factory/.kio.new.31177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kio" Mon Dec 6 23:59:27 2021 rev:120 rq:935212 version:5.88.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kio/kio.changes 2021-11-15 15:26:40.921828231 +0100 +++ /work/SRC/openSUSE:Factory/.kio.new.31177/kio.changes 2021-12-07 00:00:39.520293544 +0100 @@ -1,0 +2,7 @@ +Thu Dec 2 13:38:22 UTC 2021 - Fabian Vogt <fab...@ritter-vogt.de> + +- Add patch to fix KRun on Wayland (kde#446272, + gh#openSUSE/kmozillahelper#33): + * 0001-Fix-KRun-runApplication-when-xdg-activation-is-invol.patch + +------------------------------------------------------------------- New: ---- 0001-Fix-KRun-runApplication-when-xdg-activation-is-invol.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kio.spec ++++++ --- /var/tmp/diff_new_pack.7EJv8q/_old 2021-12-07 00:00:40.272290884 +0100 +++ /var/tmp/diff_new_pack.7EJv8q/_new 2021-12-07 00:00:40.276290870 +0100 @@ -36,6 +36,8 @@ %endif # PATCH-FIX-OPENSUSE kio_help-fallback-to-kde4-docs.patch -- allow kio_help to see into kde4 documentation, needed especially for khelpcenter5 Patch0: kio_help-fallback-to-kde4-docs.patch +# PATCH-FIX-UPSTREAM +Patch1: 0001-Fix-KRun-runApplication-when-xdg-activation-is-invol.patch BuildRequires: extra-cmake-modules >= %{_kf5_bugfix_version} BuildRequires: fdupes BuildRequires: kf5-filesystem ++++++ 0001-Fix-KRun-runApplication-when-xdg-activation-is-invol.patch ++++++ >From 886700651f4460f11c1cfec61730c75807a87258 Mon Sep 17 00:00:00 2001 From: Aleix Pol <aleix...@kde.org> Date: Tue, 30 Nov 2021 17:33:18 +0100 Subject: [PATCH] Fix KRun::runApplication when xdg activation is involved Has waitForStarted account for xdg activation token request. BUG: 446272 (cherry picked from commit 25f3a6937a80f2748790265b9b688d64126e43d0) --- src/gui/kprocessrunner.cpp | 13 ++++++++++--- src/gui/kprocessrunner_p.h | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/gui/kprocessrunner.cpp b/src/gui/kprocessrunner.cpp index 130dade75..82c959afe 100644 --- a/src/gui/kprocessrunner.cpp +++ b/src/gui/kprocessrunner.cpp @@ -32,6 +32,7 @@ #include <QProcess> #include <QStandardPaths> #include <QString> +#include <QTimer> #include <QUuid> #ifdef Q_OS_WIN @@ -259,7 +260,6 @@ void KProcessRunner::init(const KService::Ptr &service, Q_UNUSED(iconName); #endif - bool waitingForXdgToken = false; if (KWindowSystem::isPlatformWayland()) { if (!asn.isEmpty()) { m_process->setEnv(QStringLiteral("XDG_ACTIVATION_TOKEN"), QString::fromUtf8(asn)); @@ -274,7 +274,7 @@ void KProcessRunner::init(const KService::Ptr &service, } if (window) { const int launchedSerial = KWindowSystem::lastInputSerial(window); - waitingForXdgToken = true; + m_waitingForXdgToken = true; connect(this, &KProcessRunner::xdgActivationTokenArrived, m_process.get(), [this] { startProcess(); }); @@ -285,6 +285,7 @@ void KProcessRunner::init(const KService::Ptr &service, if (tokenSerial == launchedSerial) { m_process->setEnv(QStringLiteral("XDG_ACTIVATION_TOKEN"), token); Q_EMIT xdgActivationTokenArrived(); + m_waitingForXdgToken = false; } }); KWindowSystem::requestXdgActivationToken(window, launchedSerial, QFileInfo(m_serviceEntryPath).completeBaseName()); @@ -316,7 +317,7 @@ void KProcessRunner::init(const KService::Ptr &service, m_description = userVisibleName; } - if (!waitingForXdgToken) { + if (!m_waitingForXdgToken) { startProcess(); } } @@ -331,6 +332,12 @@ void ForkingProcessRunner::startProcess() bool ForkingProcessRunner::waitForStarted(int timeout) { + if (m_process->state() == QProcess::NotRunning && m_waitingForXdgToken) { + QEventLoop loop; + QObject::connect(m_process.get(), &QProcess::stateChanged, &loop, &QEventLoop::quit); + QTimer::singleShot(timeout, &loop, &QEventLoop::quit); + loop.exec(); + } return m_process->waitForStarted(timeout); } diff --git a/src/gui/kprocessrunner_p.h b/src/gui/kprocessrunner_p.h index 1f94df7a2..df6f08f64 100644 --- a/src/gui/kprocessrunner_p.h +++ b/src/gui/kprocessrunner_p.h @@ -140,6 +140,7 @@ protected: qint64 m_pid = 0; KService::Ptr m_service; QString m_serviceEntryPath; + bool m_waitingForXdgToken = false; private: void emitDelayedError(const QString &errorMsg); -- 2.34.0