mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Force dbus introspection on the Dolphin_1 object
Summary: QtDBus caches known interfaces when passing a non-empty interface name to the QDbusInterface constructor. This is an issue when calling the FileManager1 methods more than once, because `preferred` could be a valid interface from the cache, but it would later fail to call the `openFiles`/`openDirectories` methods on the main window. By passing an empty interface name, we prevent QtDBus from using the cache so that we always get an invalid interface when calling the FileManager1 methods on a daemonized dolphin process (that doesn't have the Dolphin_1 dbus object). BUG: 414402 FIXED-IN: 19.12.0 Test Plan: 1. dolphin --daemon 2. qdbus org.freedesktop.FileManager1 /org/freedesktop/FileManager1 ShowFolders "/tmp" "" 3. Close the dolphin window that was just opened. 4. Start a normal dolphin process 5. qdbus org.freedesktop.FileManager1 /org/freedesktop/FileManager1 ShowFolders "/tmp" "" 6. Close again the dolphin window 7. qdbus org.freedesktop.FileManager1 /org/freedesktop/FileManager1 ShowFolders "/tmp" "" Subscribers: kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D25510
This commit is contained in:
parent
a08d498182
commit
089a05b4ed
|
@ -82,7 +82,7 @@ bool Dolphin::attachToExistingInstance(const QList<QUrl>& inputUrls, bool openFi
|
|||
QSharedPointer<QDBusInterface> preferred(
|
||||
new QDBusInterface(preferredService,
|
||||
QStringLiteral("/dolphin/Dolphin_1"),
|
||||
QStringLiteral("org.kde.dolphin.MainWindow"))
|
||||
QString()) // #414402: use empty interface name to prevent QtDBus from caching the interface.
|
||||
);
|
||||
if (preferred->isValid() && !preferred->lastError().isValid()) {
|
||||
dolphinServices.append(qMakePair(preferred, QStringList()));
|
||||
|
|
Loading…
Reference in a new issue