X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/187933a7a6acb7f50ab397f5170308b8aab76bbc..8d30497f716d17e1062f0dea28d759e458b8397e:/src/kitemviews/kfileitemmodel.cpp diff --git a/src/kitemviews/kfileitemmodel.cpp b/src/kitemviews/kfileitemmodel.cpp index afe8f71c4..10d9e50e3 100644 --- a/src/kitemviews/kfileitemmodel.cpp +++ b/src/kitemviews/kfileitemmodel.cpp @@ -1690,7 +1690,7 @@ void KFileItemModel::removeItems(const KItemRangeList &itemRanges, RemoveItemsBe QList KFileItemModel::createItemDataList(const QUrl &parentUrl, const KFileItemList &items) const { - if (m_sortRole == TypeRole) { + if (m_sortRole == TypeRole || m_groupRole == TypeRole) { // Try to resolve the MIME-types synchronously to prevent a reordering of // the items when sorting by type (per default MIME-types are resolved // asynchronously by KFileItemModelRolesUpdater). @@ -1753,6 +1753,35 @@ void KFileItemModel::prepareItemsForSorting(QList &itemDataList) // DateRole). break; } + switch (m_groupRole) { + case ExtensionRole: + case PermissionsRole: + case OwnerRole: + case GroupRole: + case DestinationRole: + case PathRole: + case DeletionTimeRole: + for (ItemData *itemData : std::as_const(itemDataList)) { + if (itemData->values.isEmpty()) { + itemData->values = retrieveData(itemData->item, itemData->parent); + } + } + break; + + case TypeRole: + for (ItemData *itemData : std::as_const(itemDataList)) { + if (itemData->values.isEmpty()) { + const KFileItem item = itemData->item; + if (item.isDir() || item.isMimeTypeKnown()) { + itemData->values = retrieveData(itemData->item, itemData->parent); + } + } + } + break; + + default: + break; + } } int KFileItemModel::expandedParentsCount(const ItemData *data)