]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kfileitemlistview.cpp
Fix crash when disabling "Show in groups"
[dolphin.git] / src / kitemviews / kfileitemlistview.cpp
index e52865aa62c54f7069b316703489bb05ee139d1e..2da238d7a1f7cca8de3ab05dec36007cf110f0c1 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);
@@ -323,6 +339,7 @@ void KFileItemListView::updateVisibleIndexRange()
 
     const int index = firstVisibleIndex();
     const int count = lastVisibleIndex() - index + 1;
+    m_modelRolesUpdater->setMaximumVisibleItems(maximumVisibleItems());
     m_modelRolesUpdater->setVisibleIndexRange(index, count);
 
     if (m_updateIconSizeTimer->isActive()) {
@@ -401,6 +418,7 @@ void KFileItemListView::applyRolesToModel()
     roles.insert("iconName");
     roles.insert("text");
     roles.insert("isDir");
+    roles.insert("isLink");
     if (supportsItemExpanding()) {
         roles.insert("isExpanded");
         roles.insert("isExpandable");