]> cloud.milkyroute.net Git - dolphin.git/commitdiff
KFileItemModelRolesUpdater: Skip directory item count if it isSlow()
authorAndrew Gunnerson <accounts+kde@chiller3.com>
Mon, 6 Feb 2023 02:44:23 +0000 (21:44 -0500)
committerMéven Car <meven.car@kdemail.net>
Thu, 9 Feb 2023 09:18:35 +0000 (09:18 +0000)
This makes the behavior of kernel cifs/nfs mounts the same as with kio's
smb://. It also helps reduce the chance of the UI hanging due to
opendir/readdir slowing down stat calls on the UI thread.

Signed-off-by: Andrew Gunnerson <accounts+kde@chiller3.com>
src/kitemviews/kfileitemmodelrolesupdater.cpp

index cf660cb9fb8c67ca33d93bc790f07bc7b04a59d8..4af4f30243f5a5928c62c118430f6748650491cd 100644 (file)
@@ -1209,7 +1209,7 @@ void KFileItemModelRolesUpdater::applySortRole(int index)
         }
 
         data.insert("type", item.mimeComment());
-    } else if (m_model->sortRole() == "size" && item.isLocalFile() && item.isDir()) {
+    } else if (m_model->sortRole() == "size" && item.isLocalFile() && !item.isSlow() && item.isDir()) {
         const QString path = item.localPath();
         if (m_scanDirectories) {
             m_directoryContentsCounter->scanDirectory(path);
@@ -1280,7 +1280,7 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte
     const bool getSizeRole = m_roles.contains("size");
     const bool getIsExpandableRole = m_roles.contains("isExpandable");
 
-    if ((getSizeRole || getIsExpandableRole) && item.isDir()) {
+    if ((getSizeRole || getIsExpandableRole) && !item.isSlow() && item.isDir()) {
         if (item.isLocalFile()) {
             // Tell m_directoryContentsCounter that we want to count the items
             // inside the directory. The result will be received in slotDirectoryContentsCountReceived.