mirror of
https://invent.kde.org/system/dolphin
synced 2024-08-22 01:40:02 +00:00
Exclude daemonized processes from Dolphin::attachToExistingInstance()
Summary: `dolphin --daemon` does not have the `/dolphin/Dolphin_1` dbus path, because it doesn't have any DolphinMainWindow. Instead of working around this issue (as we did in D21666 and D25510), just exclude these processes from the list of dbus instances checked by `Dolphin::attachToExistingInstance()`. CCBUG: 408244 Test Plan: Same test plan as in D21666 and D25510 Reviewers: #dolphin Subscribers: kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D26213
This commit is contained in:
parent
405dd624fb
commit
fa806d48da
|
@ -44,7 +44,7 @@ void DBusInterface::ShowFolders(const QStringList& uriList, const QString& start
|
|||
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);
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ void DBusInterface::ShowItems(const QStringList& uriList, const QString& startUp
|
|||
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);
|
||||
};
|
||||
|
@ -71,3 +71,13 @@ void DBusInterface::ShowItemProperties(const QStringList& uriList, const QString
|
|||
KPropertiesDialog::showDialog(urls);
|
||||
}
|
||||
}
|
||||
|
||||
void DBusInterface::setAsDaemon()
|
||||
{
|
||||
m_isDaemon = true;
|
||||
}
|
||||
|
||||
bool DBusInterface::isDaemon() const
|
||||
{
|
||||
return m_isDaemon;
|
||||
}
|
||||
|
|
|
@ -32,6 +32,19 @@ public:
|
|||
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
|
||||
|
|
|
@ -82,7 +82,7 @@ bool Dolphin::attachToExistingInstance(const QList<QUrl>& inputUrls, bool openFi
|
|||
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()));
|
||||
|
|
|
@ -45,7 +45,9 @@ namespace Dolphin {
|
|||
|
||||
/**
|
||||
* 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());
|
||||
|
||||
|
|
|
@ -143,6 +143,7 @@ extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv)
|
|||
if (parser.isSet(QStringLiteral("daemon"))) {
|
||||
KDBusService dolphinDBusService;
|
||||
DBusInterface interface;
|
||||
interface.setAsDaemon();
|
||||
return app.exec();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue