]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemmodel.cpp
Details view: Expand the name-column like in Dolphin 1.x
[dolphin.git] / src / kitemviews / kfileitemmodel.cpp
index 4b9f2f00ed111e20858a8175eeee6bab305b0892..efc7b326e61e3510f1df929796ceab5e35d35d7e 100644 (file)
@@ -783,7 +783,15 @@ void KFileItemModel::slotRefreshItems(const QList<QPair<KFileItem, KFileItem> >&
         const int index = m_items.value(oldItem.url(), -1);
         if (index >= 0) {
             m_itemData[index]->item = newItem;
-            m_itemData[index]->values = retrieveData(newItem);
+
+            // Keep old values as long as possible if they could not retrieved synchronously yet.
+            // The update of the values will be done asynchronously by KFileItemModelRolesUpdater.
+            QHashIterator<QByteArray, QVariant> it(retrieveData(newItem));
+            while (it.hasNext()) {
+                it.next();
+                m_itemData[index]->values.insert(it.key(), it.value());
+            }
+
             m_items.remove(oldItem.url());
             m_items.insert(newItem.url(), index);
             indexes.append(index);
@@ -1076,7 +1084,6 @@ void KFileItemModel::removeExpandedItems()
 
     // The m_expandedParentsCountRoot may not get reset before all items with
     // a bigger count have been removed.
-    Q_ASSERT(m_expandedParentsCountRoot >= 0);
     removeItems(expandedItems);
 
     m_expandedParentsCountRoot = UninitializedExpandedParentsCountRoot;
@@ -1146,7 +1153,6 @@ QHash<QByteArray, QVariant> KFileItemModel::retrieveData(const KFileItem& item)
     // KFileItem::iconName() can be very expensive if the MIME-type is unknown
     // and hence will be retrieved asynchronously by KFileItemModelRolesUpdater.
     QHash<QByteArray, QVariant> data;
-    data.insert("iconPixmap", QPixmap());
     data.insert("url", item.url());
 
     const bool isDir = item.isDir();
@@ -1564,10 +1570,12 @@ int KFileItemModel::expandedParentsCountCompare(const ItemData* a, const ItemDat
     bool isDirB = true;
     const QString subPathB = subPath(b->item, pathB, index, &isDirB);
 
-    if (isDirA && !isDirB) {
-        return (sortOrder() == Qt::AscendingOrder) ? -1 : +1;
-    } else if (!isDirA && isDirB) {
-        return (sortOrder() == Qt::AscendingOrder) ? +1 : -1;
+    if (m_sortFoldersFirst || m_sortRole == SizeRole) {
+        if (isDirA && !isDirB) {
+            return (sortOrder() == Qt::AscendingOrder) ? -1 : +1;
+        } else if (!isDirA && isDirB) {
+            return (sortOrder() == Qt::AscendingOrder) ? +1 : -1;
+        }
     }
 
     // Compare the items of the parents that represent the first