┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemmodelrolesupdater.cpp
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2023-12-23 13:48:16 +0100
committerMéven Car <[email protected]>2024-01-20 11:33:31 +0100
commit52559a3a0189ecf83dcf39607c6873116c062d00 (patch)
treed867756f7661ba0c93efe7c9f6616777fa1a13ff /src/kitemviews/kfileitemmodelrolesupdater.cpp
parent5dbea4a227d50fd93789d045f465727f6e80768c (diff)
rolesupdater: set isExpandable to false when dir is empty
Signed-off-by: Méven Car <[email protected]>
Diffstat (limited to 'src/kitemviews/kfileitemmodelrolesupdater.cpp')
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp
index a136dab38..9dfa674bc 100644
--- a/src/kitemviews/kfileitemmodelrolesupdater.cpp
+++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp
@@ -1338,16 +1338,24 @@ void KFileItemModelRolesUpdater::startDirectorySizeCounting(const KFileItem &ite
++entryCount;
}
- // count has changed
- if (origCount < entryCount) {
- QHash<QByteArray, QVariant> data;
- data.insert("isExpandable", entryCount > 0);
- data.insert("count", entryCount);
+ QHash<QByteArray, QVariant> newData;
+ QVariant expandable = data.value("isExpandable");
+ if (expandable.isNull() || expandable.toBool() != (entryCount > 0)) {
+ // if expandable has changed
+ newData.insert("isExpandable", entryCount > 0);
+ }
+ if (origCount != entryCount) {
+ // count has changed
+ newData.insert("count", entryCount);
+ }
+
+ if (!newData.isEmpty()) {
disconnect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged);
- m_model->setData(index, data);
+ m_model->setData(index, newData);
connect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged);
- if (m_model->sortRole() == "size") {
+
+ if (newData.contains("count") && m_model->sortRole() == "size") {
m_model->scheduleResortAllItems();
}
}