diff options
| author | Andrey Butirsky <[email protected]> | 2021-08-20 12:31:36 +0300 |
|---|---|---|
| committer | Andrey Butirsky <[email protected]> | 2021-08-25 14:45:55 +0000 |
| commit | 5e84fffd6ed97a173d7250e7563998ea5dc395a0 (patch) | |
| tree | 1d492707a72c48a1e729feef06f1fd8ee52fc2ba | |
| parent | e76bf5cb18ca46a0adc84ead3801726814cf6fd3 (diff) | |
DBus activation with filemanager iface
In Dolphin on wayland currently, if you right clicks a file and create a
zip file from it, Dolphin makes a new window.
What we want to happen is Dolphin to focus the window we have with the
file selected.
This patches Dolphin's dbusinterface.cpp to call
KWindowSystem::setCurrentXdgActivationToken()
with the startupID
| -rw-r--r-- | src/dbusinterface.cpp | 7 | ||||
| -rw-r--r-- | src/global.cpp | 3 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/dbusinterface.cpp b/src/dbusinterface.cpp index 2b674b968..e4f647f73 100644 --- a/src/dbusinterface.cpp +++ b/src/dbusinterface.cpp @@ -9,6 +9,7 @@ #include "dolphin_generalsettings.h" #include <KPropertiesDialog> +#include <KWindowSystem> #include <QApplication> #include <QDBusConnection> @@ -28,11 +29,11 @@ DBusInterface::DBusInterface() : void DBusInterface::ShowFolders(const QStringList& uriList, const QString& startUpId) { - Q_UNUSED(startUpId) const QList<QUrl> urls = Dolphin::validateUris(uriList); if (urls.isEmpty()) { return; } + KWindowSystem::setCurrentXdgActivationToken(startUpId); const auto serviceName = isDaemon() ? QString() : QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid()); if(!Dolphin::attachToExistingInstance(urls, false, GeneralSettings::splitView(), serviceName)) { Dolphin::openNewWindow(urls); @@ -41,11 +42,11 @@ void DBusInterface::ShowFolders(const QStringList& uriList, const QString& start void DBusInterface::ShowItems(const QStringList& uriList, const QString& startUpId) { - Q_UNUSED(startUpId) const QList<QUrl> urls = Dolphin::validateUris(uriList); if (urls.isEmpty()) { return; } + KWindowSystem::setCurrentXdgActivationToken(startUpId); const auto serviceName = isDaemon() ? QString() : QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid()); if(!Dolphin::attachToExistingInstance(urls, true, GeneralSettings::splitView(), serviceName)) { Dolphin::openNewWindow(urls, nullptr, Dolphin::OpenNewWindowFlag::Select); @@ -54,9 +55,9 @@ void DBusInterface::ShowItems(const QStringList& uriList, const QString& startUp void DBusInterface::ShowItemProperties(const QStringList& uriList, const QString& startUpId) { - Q_UNUSED(startUpId) const QList<QUrl> urls = Dolphin::validateUris(uriList); if (!urls.isEmpty()) { + KWindowSystem::setCurrentXdgActivationToken(startUpId); KPropertiesDialog::showDialog(urls); } } diff --git a/src/global.cpp b/src/global.cpp index d217a67ec..e81b7d34d 100644 --- a/src/global.cpp +++ b/src/global.cpp @@ -62,8 +62,7 @@ bool Dolphin::attachToExistingInstance(const QList<QUrl>& inputUrls, bool openFi { bool attached = false; - // TODO: once Wayland clients can raise or activate themselves remove check from conditional - if (KWindowSystem::isPlatformWayland() || inputUrls.isEmpty() || !GeneralSettings::openExternallyCalledFolderInNewTab()) { + if (inputUrls.isEmpty() || !GeneralSettings::openExternallyCalledFolderInNewTab()) { return false; } |
