From c3ba8f1f0d102457d7a5afa3dd9f4172a97922e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20T=C5=AFma?= Date: Wed, 25 May 2022 23:03:30 +0200 Subject: [PATCH] Fixed broken map plotting on systems with HiDpi displays --- src/GUI/mapview.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/GUI/mapview.cpp b/src/GUI/mapview.cpp index 24709947..152c5f1c 100644 --- a/src/GUI/mapview.cpp +++ b/src/GUI/mapview.cpp @@ -726,7 +726,7 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale, PlotFlags flags) { QRect orig, adj; - qreal ratio, diff, q, p; + qreal mapRatio, ratio, diff, q, p; QPointF scenePos, scalePos, posPos, motionPos; int zoom; @@ -734,7 +734,6 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale, // Enter plot mode setUpdatesEnabled(false); _plot = true; - _map->setDevicePixelRatio(_deviceRatio, 1.0); // Compute sizes & ratios orig = viewport()->rect(); @@ -753,6 +752,9 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale, } // Expand the view if plotting into a bitmap + mapRatio = _mapRatio; + setDevicePixelRatio(_deviceRatio, 1.0); + if (flags & Expand) { qreal xdiff = (target.width() - adj.width()) / 2.0; qreal ydiff = (target.height() - adj.height()) / 2.0; @@ -805,6 +807,9 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale, rescale(); centerOn(scenePos); } + + setDevicePixelRatio(_deviceRatio, mapRatio); + _mapScale->setDigitalZoom(_digitalZoom); _mapScale->setPos(scalePos); _positionCoordinates->setDigitalZoom(_digitalZoom); @@ -813,7 +818,6 @@ void MapView::plot(QPainter *painter, const QRectF &target, qreal scale, _motionInfo->setPos(motionPos); // Exit plot mode - _map->setDevicePixelRatio(_deviceRatio, _mapRatio); _plot = false; setUpdatesEnabled(true); }