From 61def1f6cdf2eff521f77c9186fc3bb929359ab9 Mon Sep 17 00:00:00 2001 From: Florian Korsakissok Date: Wed, 13 Nov 2019 13:46:24 +0100 Subject: HiDPI: Select most fitting pixel ratio when painting QIcon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is a way to select a better pixel ratio when the QPainter has a valid pointer to a QPaintDevice than simply getting the global app pixel ratio. Change-Id: I8f89fd01094bbac7a01a83be89991730b0fa6597 Reviewed-by: Thorbjørn Lund Martsum --- src/gui/image/qicon.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/gui') diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 0fe4cd45cb..84e387e317 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -190,7 +190,12 @@ QPixmapIconEngine::~QPixmapIconEngine() void QPixmapIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) { - QSize pixmapSize = rect.size() * qt_effective_device_pixel_ratio(0); + qreal dpr = 1.0; + if (QCoreApplication::testAttribute(Qt::AA_UseHighDpiPixmaps)) { + auto paintDevice = painter->device(); + dpr = paintDevice ? paintDevice->devicePixelRatioF() : qApp->devicePixelRatio(); + } + const QSize pixmapSize = rect.size() * dpr; QPixmap px = pixmap(pixmapSize, mode, state); painter->drawPixmap(rect, px); } -- cgit v1.2.3