summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Korsakissok <florian.korsakissok@gmail.com>2019-11-13 13:46:24 +0100
committerThorbjørn Lund Martsum <tmartsum@gmail.com>2019-11-18 07:34:32 +0000
commit61def1f6cdf2eff521f77c9186fc3bb929359ab9 (patch)
tree500e4ab48de3c5f2d393ec2d9d68ed46f9af3ea2
parent54f5b8975055f1d48c74efab085acd6338aa1e3c (diff)
HiDPI: Select most fitting pixel ratio when painting QIcon
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 <tmartsum@gmail.com>
-rw-r--r--src/gui/image/qicon.cpp7
1 files changed, 6 insertions, 1 deletions
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);
}