]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemlistview.cpp
Make sure that widgets are initialized when changing the view mode
[dolphin.git] / src / kitemviews / kfileitemlistview.cpp
index 70ce11b1fbaad3ad9c749533945f423aef425f35..1f0fcbd6f7b88b78c3850d072ba7d4a0fdf3fd61 100644 (file)
@@ -190,6 +190,22 @@ KItemListWidgetCreatorBase* KFileItemListView::defaultWidgetCreator() const
     return new KItemListWidgetCreator<KFileItemListWidget>();
 }
 
+void KFileItemListView::initializeItemListWidget(KItemListWidget* item)
+{
+    KStandardItemListView::initializeItemListWidget(item);
+
+    // Make sure that the item has an icon.
+    QHash<QByteArray, QVariant> data = item->data();
+    if (!data.contains("iconName") && data["iconPixmap"].value<QPixmap>().isNull()) {
+        Q_ASSERT(qobject_cast<KFileItemModel*>(model()));
+        KFileItemModel* fileItemModel = static_cast<KFileItemModel*>(model());
+
+        const KFileItem fileItem = fileItemModel->fileItem(item->index());
+        data.insert("iconName", fileItem.iconName());
+        item->setData(data, QSet<QByteArray>() << "iconName");
+    }
+}
+
 void KFileItemListView::onPreviewsShownChanged(bool shown)
 {
     Q_UNUSED(shown);
@@ -197,12 +213,6 @@ void KFileItemListView::onPreviewsShownChanged(bool shown)
 
 void KFileItemListView::onItemLayoutChanged(ItemLayout current, ItemLayout previous)
 {
-    if (previous == DetailsLayout || current == DetailsLayout) {
-        // The details-layout requires some invisible roles that
-        // must be added to the model if the new layout is "details".
-        // If the old layout was "details" the roles will get removed.
-        applyRolesToModel();
-    }
     KStandardItemListView::onItemLayoutChanged(current, previous);
     triggerVisibleIndexRangeUpdate();
 }