diff options
| author | Méven Car <[email protected]> | 2020-10-31 12:40:57 +0100 |
|---|---|---|
| committer | Nate Graham <[email protected]> | 2020-11-03 02:21:43 +0000 |
| commit | ffe01ee8407559f46171bfea4aa6f21e37f945fb (patch) | |
| tree | 42d74be99c12a007d8d95c12a55081671ee9777c /src/kitemviews/kfileitemmodelrolesupdater.cpp | |
| parent | 5e9a869a39d1d91aae85b6dbbd09d475f9612f43 (diff) | |
FolderPanel: prevents scanning directory tree recursively
KFileItemListView contents are periodically scanned by KFileItemModelRolesUpdater.
It uses then KDirectoryContentsCounter to scan directories to determine their size possibly recursively.
Introduce a scanDirectories setting to disable directory scanning by KFileItemModelRolesUpdater.
BUG: 426617
FIXED-IN: 20.08.3
Diffstat (limited to 'src/kitemviews/kfileitemmodelrolesupdater.cpp')
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 05eabbe5e..25e1a3685 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -67,6 +67,7 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO m_resolvableRoles(), m_enabledPlugins(), m_localFileSizePreviewLimit(0), + m_scanDirectories(true), m_pendingSortRoleItems(), m_pendingIndexes(), m_pendingPreviewItems(), @@ -317,6 +318,16 @@ qlonglong KFileItemModelRolesUpdater::localFileSizePreviewLimit() const return m_localFileSizePreviewLimit; } +void KFileItemModelRolesUpdater::setScanDirectories(bool enabled) +{ + m_scanDirectories = enabled; +} + +bool KFileItemModelRolesUpdater::scanDirectories() const +{ + return m_scanDirectories; +} + void KFileItemModelRolesUpdater::slotItemsInserted(const KItemRangeList& itemRanges) { QElapsedTimer timer; @@ -1001,7 +1012,9 @@ void KFileItemModelRolesUpdater::applySortRole(int index) data.insert("type", item.mimeComment()); } else if (m_model->sortRole() == "size" && item.isLocalFile() && item.isDir()) { const QString path = item.localPath(); - m_directoryContentsCounter->scanDirectory(path); + if (m_scanDirectories) { + m_directoryContentsCounter->scanDirectory(path); + } } else { // Probably the sort role is a baloo role - just determine all roles. data = rolesData(item); @@ -1072,11 +1085,13 @@ QHash<QByteArray, QVariant> KFileItemModelRolesUpdater::rolesData(const KFileIte const bool getIsExpandableRole = m_roles.contains("isExpandable"); if ((getSizeRole || getIsExpandableRole) && item.isDir()) { - if (item.isLocalFile()) { + if (item.isLocalFile() && !item.isSlow()) { // Tell m_directoryContentsCounter that we want to count the items // inside the directory. The result will be received in slotDirectoryContentsCountReceived. - const QString path = item.localPath(); - m_directoryContentsCounter->scanDirectory(path); + if (m_scanDirectories) { + const QString path = item.localPath(); + m_directoryContentsCounter->scanDirectory(path); + } } else if (getSizeRole) { data.insert("size", -1); // -1 indicates an unknown number of items } |
