┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kfileitemlistview.cpp
diff options
context:
space:
mode:
authorMartin T. H. Sandsmark <[email protected]>2020-09-25 18:40:20 +0200
committerElvis Angelaccio <[email protected]>2020-11-01 22:17:17 +0000
commit15baa93640bbb49162f26d439e006729ee9c3441 (patch)
treef8d5e64bd9afd12ffa794f49a8187bd51027154d /src/kitemviews/kfileitemlistview.cpp
parent891ebf5758cd3569974c87f3c25f0546fe2613be (diff)
make sure we use valid icons
Diffstat (limited to 'src/kitemviews/kfileitemlistview.cpp')
-rw-r--r--src/kitemviews/kfileitemlistview.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/kitemviews/kfileitemlistview.cpp b/src/kitemviews/kfileitemlistview.cpp
index 75eb1559e..6086eb8a2 100644
--- a/src/kitemviews/kfileitemlistview.cpp
+++ b/src/kitemviews/kfileitemlistview.cpp
@@ -17,6 +17,8 @@
#include <QGraphicsView>
#include <QPainter>
#include <QTimer>
+#include <QIcon>
+#include <QMimeDatabase>
// #define KFILEITEMLISTVIEW_DEBUG
@@ -168,6 +170,9 @@ QPixmap KFileItemListView::createDragPixmap(const KItemSet& indexes) const
QPixmap pixmap = model()->data(index).value("iconPixmap").value<QPixmap>();
if (pixmap.isNull()) {
QIcon icon = QIcon::fromTheme(model()->data(index).value("iconName").toString());
+ if (icon.isNull()) {
+ icon = QIcon::fromTheme("unknown");
+ }
if (!icon.isNull()) {
pixmap = icon.pixmap(size, size);
} else {
@@ -210,7 +215,12 @@ void KFileItemListView::initializeItemListWidget(KItemListWidget* item)
KFileItemModel* fileItemModel = static_cast<KFileItemModel*>(model());
const KFileItem fileItem = fileItemModel->fileItem(item->index());
- data.insert("iconName", fileItem.iconName());
+ QString iconName = fileItem.iconName();
+ if (!QIcon::hasThemeIcon(iconName)) {
+ QMimeDatabase mimeDb;
+ iconName = mimeDb.mimeTypeForName(fileItem.mimetype()).genericIconName();
+ }
+ data.insert("iconName", iconName);
item->setData(data, {"iconName"});
}
}