diff options
| author | Méven Car <[email protected]> | 2023-12-23 13:48:16 +0100 |
|---|---|---|
| committer | Méven Car <[email protected]> | 2024-01-20 11:33:31 +0100 |
| commit | 52559a3a0189ecf83dcf39607c6873116c062d00 (patch) | |
| tree | d867756f7661ba0c93efe7c9f6616777fa1a13ff /src | |
| parent | 5dbea4a227d50fd93789d045f465727f6e80768c (diff) | |
rolesupdater: set isExpandable to false when dir is empty
Signed-off-by: Méven Car <[email protected]>
Diffstat (limited to 'src')
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.cpp | 22 |
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(); } } |
