From 25ce2b90dab1c99b1101e4496a34a2a9f79e1626 Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Wed, 22 Apr 2020 18:00:19 +0200 Subject: [PATCH] Prefer QIcon::pixmap(QWindow*, ...) overload Summary: It takes into account the dpi of the screen we're rendering to. Other overloads assume the window is nullptr and will use the primary screen's dpi which can change almost randomly. Test Plan: Icons still look fine even if I drag windows from a screen to another. Reviewers: #plasma, #frameworks, davidedmundson Reviewed By: #plasma, davidedmundson Subscribers: davidedmundson, ngraham, kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D29102 --- src/declarativeimports/core/iconitem.cpp | 2 +- src/declarativeimports/core/windowthumbnail.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/declarativeimports/core/iconitem.cpp b/src/declarativeimports/core/iconitem.cpp index 98dd42b37..9f345fe3b 100644 --- a/src/declarativeimports/core/iconitem.cpp +++ b/src/declarativeimports/core/iconitem.cpp @@ -598,7 +598,7 @@ void IconItem::loadPixmap() } } else if (!m_icon.isNull()) { KIconLoader::global()->setCustomPalette(Plasma::Theme().palette()); - result = m_icon.pixmap(QSize(size, size) * (window() ? window()->devicePixelRatio() : qApp->devicePixelRatio())); + result = m_icon.pixmap(window(), QSize(size, size)); KIconLoader::global()->resetPalette(); } else if (!m_imageIcon.isNull()) { result = QPixmap::fromImage(m_imageIcon); diff --git a/src/declarativeimports/core/windowthumbnail.cpp b/src/declarativeimports/core/windowthumbnail.cpp index e8e318b10..1806dcb32 100644 --- a/src/declarativeimports/core/windowthumbnail.cpp +++ b/src/declarativeimports/core/windowthumbnail.cpp @@ -381,7 +381,7 @@ void WindowThumbnail::iconToTexture(WindowTextureNode *textureNode) // fallback to plasma icon icon = QIcon::fromTheme(QStringLiteral("plasma")); } - QImage image = icon.pixmap(boundingRect().size().toSize()).toImage(); + QImage image = icon.pixmap(window(), boundingRect().size().toSize()).toImage(); textureNode->reset(window()->createTextureFromImage(image, QQuickWindow::TextureCanUseAtlas)); }