diff options
| author | Martin T. H. Sandsmark <[email protected]> | 2020-09-25 18:40:20 +0200 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2020-11-01 22:17:17 +0000 |
| commit | 15baa93640bbb49162f26d439e006729ee9c3441 (patch) | |
| tree | f8d5e64bd9afd12ffa794f49a8187bd51027154d /src/kitemviews/kfileitemlistview.cpp | |
| parent | 891ebf5758cd3569974c87f3c25f0546fe2613be (diff) | |
make sure we use valid icons
Diffstat (limited to 'src/kitemviews/kfileitemlistview.cpp')
| -rw-r--r-- | src/kitemviews/kfileitemlistview.cpp | 12 |
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"}); } } |
