┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/information/informationpanelcontent.cpp
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2025-01-14 18:52:36 +0100
committerMéven Car <[email protected]>2025-01-17 11:07:40 +0100
commit961e6270e4401a6c7512df3a2e3efd09a25df962 (patch)
treee282410c9546d0b636ca156848f6b75da722da61 /src/panels/information/informationpanelcontent.cpp
parent9a44aad838e111175b57a7ff14a9f6d2f44c5b65 (diff)
Refactor Overlay Handling
Now all overlays icons in kitemviews are added in KStandardItemListWidget::updatePixmapCache. data[iconOverlays] now contains icon names. DolphinFileItemListWidget::refreshCache is the sole responsible of setting the overlays either coming from KFileItemModelRolesUpdater or KVersionControlPlugin. This garantees consistency in rendering. BUG: 497372
Diffstat (limited to 'src/panels/information/informationpanelcontent.cpp')
-rw-r--r--src/panels/information/informationpanelcontent.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp
index b112b2caf..14a470b11 100644
--- a/src/panels/information/informationpanelcontent.cpp
+++ b/src/panels/information/informationpanelcontent.cpp
@@ -362,8 +362,23 @@ void InformationPanelContent::showPreview(const KFileItem &item, const QPixmap &
{
m_outdatedPreviewTimer->stop();
- QPixmap p = KIconUtils::addOverlays(pixmap, item.overlays()).pixmap(m_preview->size(), devicePixelRatioF());
- p.setDevicePixelRatio(devicePixelRatioF());
+ QPixmap p = pixmap;
+ if (!item.overlays().isEmpty()) {
+ // Avoid scaling the images that are smaller than the preview size, to be consistent when there is no overlays
+ if (pixmap.height() < m_preview->height() && pixmap.width() < m_preview->width()) {
+ p = QPixmap(m_preview->size() * devicePixelRatioF());
+ p.fill(Qt::transparent);
+ p.setDevicePixelRatio(devicePixelRatioF());
+
+ QPainter painter(&p);
+ painter.drawPixmap(QPointF{m_preview->width() / 2.0 - pixmap.width() / pixmap.devicePixelRatioF() / 2,
+ m_preview->height() / 2.0 - pixmap.height() / pixmap.devicePixelRatioF() / 2}
+ .toPoint(),
+ pixmap);
+ }
+ p = KIconUtils::addOverlays(p, item.overlays()).pixmap(m_preview->size(), devicePixelRatioF());
+ p.setDevicePixelRatio(devicePixelRatioF());
+ }
if (m_isVideo) {
// adds a play arrow overlay