Skip to content

Commit b74f2cf

Browse files
committed
Correctly scale identify highlight to account for canvas magnification
Avoids super-large line highlights when canvas is magnified
1 parent 6ac774e commit b74f2cf

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/gui/qgshighlight.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -188,14 +188,12 @@ void QgsHighlight::setSymbol( QgsSymbol *symbol, const QgsRenderContext &context
188188

189189
double QgsHighlight::getSymbolWidth( const QgsRenderContext &context, double width, Qgis::RenderUnit unit )
190190
{
191-
// if necessary scale mm to map units
192-
double scale = 1.;
193-
if ( unit == Qgis::RenderUnit::MapUnits )
194-
{
195-
scale = context.convertToPainterUnits( 1, Qgis::RenderUnit::Millimeters ) / context.convertToPainterUnits( 1, Qgis::RenderUnit::MapUnits );
196-
}
197-
width = std::max( width + 2 * mBuffer * scale, mMinWidth * scale );
198-
return width;
191+
const double widthInPainterUnits = context.convertToPainterUnits( width, unit );
192+
const double bufferInPainterUnits = context.convertToPainterUnits( mBuffer, Qgis::RenderUnit::Millimeters );
193+
const double minWidthInPainterUnits = context.convertToPainterUnits( mMinWidth, Qgis::RenderUnit::Millimeters );
194+
195+
const double adjustedWidthInPainterUnits = std::max( widthInPainterUnits + 2 * bufferInPainterUnits, minWidthInPainterUnits );
196+
return context.convertFromPainterUnits( adjustedWidthInPainterUnits, unit ) / mMapCanvas->magnificationFactor();
199197
}
200198

201199
void QgsHighlight::setWidth( int width )

0 commit comments

Comments
 (0)