]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Don't store view properties on network shares
authorKai Uwe Broulik <kde@privat.broulik.de>
Wed, 28 Aug 2019 07:46:58 +0000 (09:46 +0200)
committerKai Uwe Broulik <kde@privat.broulik.de>
Wed, 28 Aug 2019 07:47:29 +0000 (09:47 +0200)
Entering a folder will have Dolphin determine whether it can store the view properties in a .directory file within the folder or
in a generic config location.
It does so by checking for permissions on the file and parent dir causing various stat calls that potentially block on a slow mount.
Also, the config reading thereafter can be very slow.
Moreover, network shares are typically shared between users, so one user's view properties shouldn't affect or be overwritten
by this Dolphin instance.
It doesn't resolve symlinks but is surely an improvement over the status quo.

Differential Revision: https://phabricator.kde.org/D23458

src/views/viewproperties.cpp

index eddc7225d09e86459b52c95de232789983fecea0..48ed654715ca55ccdcbaa697eebdc5d6ba49edcd 100644 (file)
@@ -26,6 +26,8 @@
 
 #include <QCryptographicHash>
 
+#include <KFileItem>
+
 namespace {
     const int AdditionalInfoViewPropertiesVersion = 1;
     const int NameRolePropertiesVersion = 2;
@@ -70,6 +72,11 @@ ViewProperties::ViewProperties(const QUrl& url) :
         m_filePath = url.toLocalFile();
 
         bool useDestinationDir = !isPartOfHome(m_filePath);
+        if (!useDestinationDir) {
+            const KFileItem fileItem(url);
+            useDestinationDir = fileItem.isSlow();
+        }
+
         if (!useDestinationDir) {
             const QFileInfo dirInfo(m_filePath);
             const QFileInfo fileInfo(m_filePath + QDir::separator() + ViewPropertiesFileName);