mirror of
https://invent.kde.org/system/dolphin
synced 2024-06-30 15:36:30 +00:00
Fix for necessary roles not being fetched before grouping. Visual polish
This commit is contained in:
parent
187933a7a6
commit
8d30497f71
|
@ -1690,7 +1690,7 @@ void KFileItemModel::removeItems(const KItemRangeList &itemRanges, RemoveItemsBe
|
|||
|
||||
QList<KFileItemModel::ItemData *> 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<ItemData *> &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)
|
||||
|
|
|
@ -796,6 +796,15 @@ void DolphinViewActionHandler::slotGroupRoleChanged(const QByteArray &role)
|
|||
ascending->setText(i18nc("Group ascending", "Ascending"));
|
||||
}
|
||||
|
||||
// Disable group order selector if grouping behavior does not support it
|
||||
if (role == "none" || role == "followSort") {
|
||||
descending->setEnabled(false);
|
||||
ascending->setEnabled(false);
|
||||
} else {
|
||||
descending->setEnabled(true);
|
||||
ascending->setEnabled(true);
|
||||
}
|
||||
|
||||
slotGroupOrderChanged(m_currentView->groupOrder());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user