Skip to content

Commit 060270c

Browse files
committed
[layouts] Simplify scalebar unit handling
Instead of auto setting the units to meters/feet, and then using the label multiplier setting to obtain a scalebar in km/miles, instead we always keep auto-set label multipliers at 1 and just always keep the users explicitly set scale bar units. This should help avoid the complexity of layout scale bars, while still keeping flexibility if someone does need custom units.
1 parent b7ef3d3 commit 060270c

File tree

1 file changed

+2
-42
lines changed

1 file changed

+2
-42
lines changed

src/core/layout/qgslayoutitemscalebar.cpp

Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -400,48 +400,8 @@ void QgsLayoutItemScaleBar::applyDefaultSize( QgsUnitTypes::DistanceUnit units )
400400
double initialUnitsPerSegment = widthInSelectedUnits / 10.0; //default scalebar width equals half the map width
401401
mSettings.setUnitsPerSegment( initialUnitsPerSegment );
402402

403-
switch ( units )
404-
{
405-
case QgsUnitTypes::DistanceUnknownUnit:
406-
{
407-
upperMagnitudeMultiplier = 1.0;
408-
setUnitLabel( tr( "units" ) );
409-
break;
410-
}
411-
case QgsUnitTypes::DistanceMeters:
412-
{
413-
if ( initialUnitsPerSegment > 1000.0 )
414-
{
415-
upperMagnitudeMultiplier = 1000.0;
416-
setUnitLabel( tr( "km" ) );
417-
}
418-
else
419-
{
420-
upperMagnitudeMultiplier = 1.0;
421-
setUnitLabel( tr( "m" ) );
422-
}
423-
break;
424-
}
425-
case QgsUnitTypes::DistanceFeet:
426-
{
427-
if ( initialUnitsPerSegment > 5419.95 )
428-
{
429-
upperMagnitudeMultiplier = 5419.95;
430-
setUnitLabel( tr( "miles" ) );
431-
}
432-
else
433-
{
434-
upperMagnitudeMultiplier = 1.0;
435-
setUnitLabel( tr( "ft" ) );
436-
}
437-
break;
438-
}
439-
440-
default:
441-
setUnitLabel( QgsUnitTypes::toAbbreviatedString( units ) );
442-
upperMagnitudeMultiplier = 1;
443-
break;
444-
}
403+
setUnitLabel( QgsUnitTypes::toAbbreviatedString( units ) );
404+
upperMagnitudeMultiplier = 1;
445405

446406
double segmentWidth = initialUnitsPerSegment / upperMagnitudeMultiplier;
447407
int segmentMagnitude = std::floor( std::log10( segmentWidth ) );

0 commit comments

Comments
 (0)