]> cloud.milkyroute.net Git - dolphin.git/commitdiff
rolesupdater: set isExpandable to false when dir is empty
authorMéven Car <meven@kde.org>
Sat, 23 Dec 2023 12:48:16 +0000 (13:48 +0100)
committerMéven Car <meven@kde.org>
Sat, 20 Jan 2024 10:33:31 +0000 (11:33 +0100)
Signed-off-by: Méven Car <meven@kde.org>
src/kitemviews/kfileitemmodelrolesupdater.cpp

index a136dab388153109998b8a1296573e9134c5131d..9dfa674bc524bbdf61935e91c82699b286507eae 100644 (file)
@@ -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();
                 }
             }