if (urls.isEmpty()) {
return;
}
- const auto serviceName = QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid());
+ const auto serviceName = isDaemon() ? QString() : QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid());
if(!Dolphin::attachToExistingInstance(urls, false, GeneralSettings::splitView(), serviceName)) {
Dolphin::openNewWindow(urls);
}
if (urls.isEmpty()) {
return;
}
- const auto serviceName = QStringLiteral("org.kde.dolphin-%1").arg(QCoreApplication::applicationPid());
+ 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);
};
KPropertiesDialog::showDialog(urls);
}
}
+
+void DBusInterface::setAsDaemon()
+{
+ m_isDaemon = true;
+}
+
+bool DBusInterface::isDaemon() const
+{
+ return m_isDaemon;
+}
Q_SCRIPTABLE void ShowFolders(const QStringList& uriList, const QString& startUpId);
Q_SCRIPTABLE void ShowItems(const QStringList& uriList, const QString& startUpId);
Q_SCRIPTABLE void ShowItemProperties(const QStringList& uriList, const QString& startUpId);
+
+ /**
+ * Set whether this interface has been created by dolphin --deamon.
+ */
+ void setAsDaemon();
+
+ /**
+ * @return Whether this interface has been created by dolphin --deamon.
+ */
+ bool isDaemon() const;
+
+private:
+ bool m_isDaemon = false;
};
#endif // DBUSINTERFACE_H
QSharedPointer<QDBusInterface> preferredInterface(
new QDBusInterface(preferredService,
QStringLiteral("/dolphin/Dolphin_1"),
- QString()) // #414402: use empty interface name to prevent QtDBus from caching the interface.
+ QStringLiteral("org.kde.dolphin.MainWindow"))
);
if (preferredInterface->isValid() && !preferredInterface->lastError().isValid()) {
dolphinInterfaces.append(qMakePair(preferredInterface, QStringList()));
/**
* Attaches URLs to an existing Dolphin instance if possible.
- * Returns true if URLs were successfully attached
+ * If @p preferredService is a valid dbus service, it will be tried first.
+ * @p preferredService needs to support the org.kde.dolphin.MainWindow dbus interface with the /dolphin/Dolphin_1 path.
+ * Returns true if the URLs were successfully attached.
*/
bool attachToExistingInstance(const QList<QUrl>& inputUrls, bool openFiles, bool splitView, const QString& preferredService = QString());
if (parser.isSet(QStringLiteral("daemon"))) {
KDBusService dolphinDBusService;
DBusInterface interface;
+ interface.setAsDaemon();
return app.exec();
}