From 34e0a5488e3c2d1ed0ff291549934b7490474b5c Mon Sep 17 00:00:00 2001 From: Andrew Gunnerson Date: Sun, 5 Feb 2023 21:44:23 -0500 Subject: [PATCH] KFileItemModelRolesUpdater: Skip directory item count if it isSlow() 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 --- src/kitemviews/kfileitemmodelrolesupdater.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index cf660cb9fb..4af4f30243 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -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 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.