From: Méven Car Date: Fri, 10 Jan 2025 09:05:32 +0000 (+0100) Subject: Icons: when adding overlays pass in the output size X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/fe56127d9e90c2b364189d38ea43c64ee2019874?ds=sidebyside Icons: when adding overlays pass in the output size Instead of the pixmap size that won't be accurate. It allow KGuiAddons::addOverlays to draw larger images to add overlays. Consequently the emblems are not longer dependant scaled based on the pixmap aspect ratio. BUG: 498211 --- diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index f5fae6f34..6bb566cc4 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -556,18 +556,9 @@ void KFileItemModelRolesUpdater::slotGotPreview(const KFileItem &item, const QPi QHash data = rolesData(item, index); const QStringList overlays = data["iconOverlays"].toStringList(); - // Strangely KFileItem::overlays() returns empty string-values, so - // we need to check first whether an overlay must be drawn at all. - if (!scaledPixmap.isNull()) { - for (const QString &overlay : overlays) { - if (!overlay.isEmpty()) { - // There is at least one overlay, draw all overlays above m_pixmap - // and cancel the check - const QSize logicalSize = scaledPixmap.size() / scaledPixmap.devicePixelRatioF(); - scaledPixmap = KIconUtils::addOverlays(scaledPixmap, overlays).pixmap(logicalSize, scaledPixmap.devicePixelRatioF()); - break; - } - } + 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); diff --git a/src/panels/information/informationpanelcontent.cpp b/src/panels/information/informationpanelcontent.cpp index 428a46a5f..78900ab8a 100644 --- a/src/panels/information/informationpanelcontent.cpp +++ b/src/panels/information/informationpanelcontent.cpp @@ -362,9 +362,8 @@ void InformationPanelContent::showPreview(const KFileItem &item, const QPixmap & { m_outdatedPreviewTimer->stop(); - const QSize logicalSize = pixmap.size() / pixmap.devicePixelRatioF(); - QPixmap p = KIconUtils::addOverlays(pixmap, item.overlays()).pixmap(logicalSize, pixmap.devicePixelRatioF()); - p.setDevicePixelRatio(pixmap.devicePixelRatioF()); + QPixmap p = KIconUtils::addOverlays(pixmap, item.overlays()).pixmap(m_preview->size(), devicePixelRatioF()); + p.setDevicePixelRatio(devicePixelRatioF()); if (m_isVideo) { // adds a play arrow overlay