1
0
mirror of https://invent.kde.org/system/dolphin synced 2024-07-04 17:30:55 +00:00

Slightly refactor count resorting

The bug fix 8f043b2958 introduced a
secondary code path to trigger a resort of items. However, the previous
way to trigger it only required a small bug fix to work and gives us a
couple of optimisations for free. This commit removes the secondary code
path and fixes the primary one.

CCBUG: 473999
This commit is contained in:
Felix Ernst 2024-01-22 18:33:09 +01:00 committed by Felix Ernst
parent a85302d567
commit e817c3246c
3 changed files with 5 additions and 8 deletions

View File

@ -1726,7 +1726,8 @@ void KFileItemModel::emitItemsChangedAndTriggerResorting(const KItemRangeList &i
// Trigger a resorting if necessary. Note that this can happen even if the sort
// role has not changed at all because the file name can be used as a fallback.
if (changedRoles.contains(sortRole()) || changedRoles.contains(roleForType(NameRole))) {
if (changedRoles.contains(sortRole()) || changedRoles.contains(roleForType(NameRole))
|| (changedRoles.contains("count") && sortRole() == "size")) { // "count" is used in the "size" sort role, so this might require a resorting.
for (const KItemRange &range : itemRanges) {
bool needsResorting = false;
@ -1751,7 +1752,7 @@ void KFileItemModel::emitItemsChangedAndTriggerResorting(const KItemRangeList &i
}
if (needsResorting) {
m_resortAllItemsTimer->start();
scheduleResortAllItems();
return;
}
}

View File

@ -205,8 +205,6 @@ public:
/** set to true to hide application/x-trash files */
void setShowTrashMime(bool show);
void scheduleResortAllItems();
Q_SIGNALS:
/**
* Is emitted if the loading of a directory has been started. It is
@ -464,6 +462,8 @@ private:
*/
bool isChildItem(int index) const;
void scheduleResortAllItems();
/**
* Is invoked by KFileItemModelRolesUpdater and results in emitting the
* sortProgress signal with a percent-value of the progress.

View File

@ -1354,10 +1354,6 @@ void KFileItemModelRolesUpdater::startDirectorySizeCounting(const KFileItem &ite
disconnect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged);
m_model->setData(index, newData);
connect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged);
if (newData.contains("count") && m_model->sortRole() == "size") {
m_model->scheduleResortAllItems();
}
}
});
return;