]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/global.cpp
Merge branch 'release/21.08'
[dolphin.git] / src / global.cpp
index 3d17a733bca243110621a75069adbd2c5c5ec146..0712aa173f8c7429d7e6c80ce0f86a7692e4c441 100644 (file)
@@ -9,6 +9,7 @@
 #include "dolphin_generalsettings.h"
 #include "dolphindebug.h"
 #include "dolphinmainwindowinterface.h"
+#include "views/viewproperties.h"
 
 #include <KConfigWatcher>
 #include <KDialogJobUiDelegate>
@@ -61,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;
     }
 
@@ -90,16 +90,14 @@ bool Dolphin::attachToExistingInstance(const QList<QUrl>& inputUrls, bool openFi
             newUrls.append(url);
         }
     }
-    dolphinInterfaces.front().second << newUrls;
 
     for (const auto& interface: qAsConst(dolphinInterfaces)) {
-        if (!interface.second.isEmpty()) {
-            auto reply = openFiles ? interface.first->openFiles(interface.second, splitView) : interface.first->openDirectories(interface.second, splitView);
-            reply.waitForFinished();
-            if (!reply.isError()) {
-                interface.first->activateWindow();
-                attached = true;
-            }
+        auto reply = openFiles ? interface.first->openFiles(newUrls, splitView) : interface.first->openDirectories(newUrls, splitView);
+        reply.waitForFinished();
+        if (!reply.isError()) {
+            interface.first->activateWindow();
+            attached = true;
+            break;
         }
     }
     return attached;
@@ -119,7 +117,8 @@ QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> Do
     }
 
     // Look for dolphin instances among all available dbus services.
-    const QStringList dbusServices = QDBusConnection::sessionBus().interface()->registeredServiceNames().value();
+    QDBusConnectionInterface *sessionInterface = QDBusConnection::sessionBus().interface();
+    const QStringList dbusServices = sessionInterface ? sessionInterface->registeredServiceNames().value() : QStringList();
     // Don't match the service without trailing "-" (unique instance)
     const QString pattern = QStringLiteral("org.kde.dolphin-");
     // Don't match the pid without leading "-"
@@ -140,6 +139,12 @@ QVector<QPair<QSharedPointer<OrgKdeDolphinMainWindowInterface>, QStringList>> Do
     return dolphinInterfaces;
 }
 
+QPair<QString, Qt::SortOrder> Dolphin::sortOrderForUrl(QUrl &url)
+{
+    ViewProperties globalProps(url);
+    return QPair<QString, Qt::SortOrder>(globalProps.sortRole(), globalProps.sortOrder());
+}
+
 double GlobalConfig::animationDurationFactor()
 {
     if (s_animationDurationFactor >= 0.0) {