From: Kai Uwe Broulik Date: Wed, 8 Mar 2017 15:52:15 +0000 (+0100) Subject: Pass application name and icon to KRun X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/b79ea9f5e4a83e4cc877235a6aa62f666bee0289 Pass application name and icon to KRun Otherwise this results in the generic executable icon as bouncy cursor. Differential Revision: https://phabricator.kde.org/D4823 --- diff --git a/src/dbusinterface.cpp b/src/dbusinterface.cpp index 124761ea0..37270b787 100644 --- a/src/dbusinterface.cpp +++ b/src/dbusinterface.cpp @@ -41,7 +41,7 @@ void DBusInterface::ShowFolders(const QStringList& uriList, const QString& start if (urls.isEmpty()) { return; } - KRun::run(QStringLiteral("dolphin %U"), urls, nullptr); + Dolphin::openNewWindow(urls); } void DBusInterface::ShowItems(const QStringList& uriList, const QString& startUpId) @@ -51,7 +51,7 @@ void DBusInterface::ShowItems(const QStringList& uriList, const QString& startUp if (urls.isEmpty()) { return; } - KRun::run(QStringLiteral("dolphin --select %U"), urls, nullptr); + Dolphin::openNewWindow(urls, nullptr, Dolphin::OpenNewWindowFlag::Select); } void DBusInterface::ShowItemProperties(const QStringList& uriList, const QString& startUpId) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 185db7193..2784bd08c 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -290,7 +290,7 @@ void DolphinMainWindow::updateFilterBarAction(bool show) void DolphinMainWindow::openNewMainWindow() { - KRun::run(QStringLiteral("dolphin %u"), QList(), this); + Dolphin::openNewWindow({}, this); } void DolphinMainWindow::openNewActivatedTab() @@ -331,7 +331,7 @@ void DolphinMainWindow::openInNewWindow() } if (!newWindowUrl.isEmpty()) { - KRun::run(QStringLiteral("dolphin %u"), {newWindowUrl}, this); + Dolphin::openNewWindow({newWindowUrl}, this); } } @@ -772,11 +772,9 @@ void DolphinMainWindow::openContextMenu(const QPoint& pos, changeUrl(KIO::upUrl(item.url())); break; - case DolphinContextMenu::OpenParentFolderInNewWindow: { - - KRun::run(QStringLiteral("dolphin %u"), {KIO::upUrl(item.url())}, this); + case DolphinContextMenu::OpenParentFolderInNewWindow: + Dolphin::openNewWindow({KIO::upUrl(item.url())}, this); break; - } case DolphinContextMenu::OpenParentFolderInNewTab: openNewTab(KIO::upUrl(item.url())); diff --git a/src/global.cpp b/src/global.cpp index 3d6d7dd5e..20dee00fa 100644 --- a/src/global.cpp +++ b/src/global.cpp @@ -17,6 +17,11 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include +#include + +#include + #include "global.h" #include "dolphindebug.h" @@ -41,3 +46,18 @@ QUrl Dolphin::homeUrl() { return QUrl::fromUserInput(GeneralSettings::homeUrl(), QString(), QUrl::AssumeLocalFile); } + +void Dolphin::openNewWindow(const QList &urls, QWidget *window, const OpenNewWindowFlags &flags) +{ + QString command = QStringLiteral("dolphin"); + + if (flags.testFlag(OpenNewWindowFlag::Select)) { + command.append(QLatin1String(" --select")); + } + + if (!urls.isEmpty()) { + command.append(QLatin1String(" %U")); + } + + KRun::run(command, urls, window, qApp->applicationDisplayName(), qApp->windowIcon().name()); +} diff --git a/src/global.h b/src/global.h index 0ac2e9acb..3b6af43e9 100644 --- a/src/global.h +++ b/src/global.h @@ -30,6 +30,17 @@ namespace Dolphin { * Returns the home url which is defined in General Settings */ QUrl homeUrl(); + + enum class OpenNewWindowFlag { + None = 0, + Select = 1<<1 + }; + Q_DECLARE_FLAGS(OpenNewWindowFlags, OpenNewWindowFlag) + + /** + * Opens a new Dolphin window + */ + void openNewWindow(const QList &urls = {}, QWidget *window = nullptr, const OpenNewWindowFlags &flags = OpenNewWindowFlag::None); } #endif //GLOBAL_H