From f306e558c60a84775a73e29b7c63a9e41ba88cce Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 14 Mar 2024 14:38:15 +1000 Subject: [PATCH] Fix overlapping text when narrow range is close to top --- .../qgselevationcontrollerwidget.cpp | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/gui/elevation/qgselevationcontrollerwidget.cpp b/src/gui/elevation/qgselevationcontrollerwidget.cpp index ba56a771c0d..dee437b3199 100644 --- a/src/gui/elevation/qgselevationcontrollerwidget.cpp +++ b/src/gui/elevation/qgselevationcontrollerwidget.cpp @@ -224,6 +224,7 @@ void QgsElevationControllerLabels::paintEvent( QPaintEvent * ) const bool lowerIsCloseToLimit = lowerY + fm.height() > rect().bottom() - fm.descent(); const bool upperIsCloseToLimit = upperY - fm.height() < rect().top() + fm.ascent(); + const bool lowerIsCloseToUpperLimit = lowerY - fm.height() < rect().top() + fm.ascent(); QLocale locale; @@ -246,17 +247,28 @@ void QgsElevationControllerLabels::paintEvent( QPaintEvent * ) if ( mLimits.upper() < std::numeric_limits< double >::max() ) { - if ( upperIsCloseToLimit ) + if ( qgsDoubleNear( mRange.upper(), mRange.lower() ) ) { - f.setBold( true ); - path.addText( left, upperY, f, locale.toString( mRange.upper() ) ); + if ( !lowerIsCloseToUpperLimit ) + { + f.setBold( false ); + path.addText( left, rect().top() + fm.ascent(), f, locale.toString( mLimits.upper() ) ); + } } else { - f.setBold( true ); - path.addText( left, upperY, f, locale.toString( mRange.upper() ) ); - f.setBold( false ); - path.addText( left, rect().top() + fm.ascent(), f, locale.toString( mLimits.upper() ) ); + if ( upperIsCloseToLimit ) + { + f.setBold( true ); + path.addText( left, upperY, f, locale.toString( mRange.upper() ) ); + } + else + { + f.setBold( true ); + path.addText( left, upperY, f, locale.toString( mRange.upper() ) ); + f.setBold( false ); + path.addText( left, rect().top() + fm.ascent(), f, locale.toString( mLimits.upper() ) ); + } } }