From 8b3c45ab09223e73303a98dd3d845880e7f9f7f1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?M=C3=A9ven=20Car?= Date: Sat, 11 Jan 2025 12:59:32 +0100 Subject: [PATCH] KFileItemModelRolesUpdater: Show emblems even in hover sequence --- src/kitemviews/kfileitemmodelrolesupdater.cpp | 26 ++++++++++--------- src/kitemviews/kfileitemmodelrolesupdater.h | 3 ++- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 6bb566cc4..1b2c92a1a 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -551,17 +551,10 @@ void KFileItemModelRolesUpdater::slotGotPreview(const KFileItem &item, const QPi return; } - QPixmap scaledPixmap = transformPreviewPixmap(pixmap); - QHash data = rolesData(item, index); - const QStringList overlays = data["iconOverlays"].toStringList(); - if (!pixmap.isNull() && !overlays.isEmpty()) { - const QSize cacheSize = (m_iconSize.width() > 128) || (m_iconSize.height() > 128) ? QSize(256, 256) : QSize(128, 128); - scaledPixmap = KIconUtils::addOverlays(scaledPixmap, overlays).pixmap(cacheSize, m_devicePixelRatio); - } - data.insert("iconPixmap", scaledPixmap); + data.insert("iconPixmap", transformPreviewPixmap(pixmap, overlays)); disconnect(m_model, &KFileItemModel::itemsChanged, this, &KFileItemModelRolesUpdater::slotItemsChanged); m_model->setData(index, data); @@ -639,7 +632,7 @@ void KFileItemModelRolesUpdater::slotHoverSequenceGotPreview(const KFileItem &it if (wap < 0.0f || loadedIndex < static_cast(wap)) { // Add the preview to the model data - const QPixmap scaledPixmap = transformPreviewPixmap(pixmap); + QPixmap scaledPixmap = transformPreviewPixmap(pixmap, data["iconOverlays"].toStringList()); pixmaps.append(scaledPixmap); data["hoverSequencePixmaps"] = QVariant::fromValue(pixmaps); @@ -1017,11 +1010,15 @@ void KFileItemModelRolesUpdater::startPreviewJob() m_previewJob = job; } -QPixmap KFileItemModelRolesUpdater::transformPreviewPixmap(const QPixmap &pixmap) +QPixmap KFileItemModelRolesUpdater::transformPreviewPixmap(const QPixmap &pixmap, const QStringList &overlays) { QPixmap scaledPixmap = pixmap; - if (!pixmap.hasAlpha() && !pixmap.isNull() && m_iconSize.width() > KIconLoader::SizeSmallMedium && m_iconSize.height() > KIconLoader::SizeSmallMedium) { + if (pixmap.isNull()) { + return scaledPixmap; + } + + if (!pixmap.hasAlpha() && m_iconSize.width() > KIconLoader::SizeSmallMedium && m_iconSize.height() > KIconLoader::SizeSmallMedium) { if (m_enlargeSmallPreviews) { KPixmapModifier::applyFrame(scaledPixmap, m_iconSize); } else { @@ -1049,11 +1046,16 @@ QPixmap KFileItemModelRolesUpdater::transformPreviewPixmap(const QPixmap &pixmap KPixmapModifier::applyFrame(scaledPixmap, m_iconSize); } } - } else if (!pixmap.isNull()) { + } else { KPixmapModifier::scale(scaledPixmap, m_iconSize * m_devicePixelRatio); scaledPixmap.setDevicePixelRatio(m_devicePixelRatio); } + if (!overlays.isEmpty()) { + const QSize cacheSize = (m_iconSize.width() > 128) || (m_iconSize.height() > 128) ? QSize(256, 256) : QSize(128, 128); + scaledPixmap = KIconUtils::addOverlays(scaledPixmap, overlays).pixmap(cacheSize, m_devicePixelRatio); + } + return scaledPixmap; } diff --git a/src/kitemviews/kfileitemmodelrolesupdater.h b/src/kitemviews/kfileitemmodelrolesupdater.h index cba5b21a8..a5bacf947 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.h +++ b/src/kitemviews/kfileitemmodelrolesupdater.h @@ -296,9 +296,10 @@ private: * Transforms a raw preview image, applying scale and frame. * * @param pixmap A raw preview image from a PreviewJob. + * @param overlays the overlays to add to the pixmap * @return The scaled and decorated preview image. */ - QPixmap transformPreviewPixmap(const QPixmap &pixmap); + QPixmap transformPreviewPixmap(const QPixmap &pixmap, const QStringList &overlays); /** * Starts a PreviewJob for loading the next hover sequence image. -- 2.47.3