diff options
author | Florian Korsakissok <florian.korsakissok@gmail.com> | 2019-11-13 13:46:24 +0100 |
---|---|---|
committer | Thorbjørn Lund Martsum <tmartsum@gmail.com> | 2019-11-18 07:34:32 +0000 |
commit | 61def1f6cdf2eff521f77c9186fc3bb929359ab9 (patch) | |
tree | 500e4ab48de3c5f2d393ec2d9d68ed46f9af3ea2 | |
parent | 54f5b8975055f1d48c74efab085acd6338aa1e3c (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.cpp | 7 |
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); } |