From bb6dda65002351dfb477e799b2c23cb98a80c6a0 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Sat, 10 Dec 2011 23:02:04 +0100 Subject: [PATCH] Fix issue that icon overlay is missing for links BUG: 288609 FIXED-IN: 4.8.0 --- src/kitemviews/kfileitemlistwidget.cpp | 19 ++++++++++++++++++- src/kitemviews/kfileitemmodelrolesupdater.cpp | 2 ++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp index 966827017..13832a80b 100644 --- a/src/kitemviews/kfileitemlistwidget.cpp +++ b/src/kitemviews/kfileitemlistwidget.cpp @@ -460,7 +460,8 @@ void KFileItemListWidget::updatePixmapCache() if (!updatePixmap && m_dirtyContent) { updatePixmap = m_dirtyContentRoles.isEmpty() || m_dirtyContentRoles.contains("iconPixmap") - || m_dirtyContentRoles.contains("iconName"); + || m_dirtyContentRoles.contains("iconName") + || m_dirtyContentRoles.contains("iconOverlays"); } if (updatePixmap) { @@ -507,6 +508,22 @@ void KFileItemListWidget::updatePixmapCache() m_originalPixmapSize = m_pixmap.size(); } + const QStringList overlays = values["iconOverlays"].toStringList(); + + // Strangely KFileItem::overlays() returns empty string-values, so + // we need to check first whether an overlay must be drawn at all. + // It is more efficient to do it here, as KIconLoader::drawOverlays() + // assumes that an overlay will be drawn and has some additional + // setup time. + foreach (const QString& overlay, overlays) { + if (!overlay.isEmpty()) { + // There is at least one overlay, draw all overlays above m_pixmap + // and cancel the check + KIconLoader::global()->drawOverlays(overlays, m_pixmap, KIconLoader::Desktop); + break; + } + } + if (m_isCut) { applyCutEffect(m_pixmap); } diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index a55229722..65c11e0f5 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -714,6 +714,8 @@ QHash KFileItemModelRolesUpdater::rolesData(const KFileIte data.insert("type", item.mimeComment()); } + data.insert("iconOverlays", item.overlays()); + return data; } -- 2.47.3