┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2025-01-11 12:59:32 +0100
committerMéven Car <[email protected]>2025-01-11 13:22:39 +0100
commit8b3c45ab09223e73303a98dd3d845880e7f9f7f1 (patch)
tree8c1f907d96a2b7189fc469b9511ce020e96ee126 /src
parentfe56127d9e90c2b364189d38ea43c64ee2019874 (diff)
KFileItemModelRolesUpdater: Show emblems even in hover sequence
Diffstat (limited to 'src')
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.cpp26
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.h3
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<QByteArray, QVariant> 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<int>(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.