Skip to content

Commit 1770ec1

Browse files
committed
Merge pull request #1618 from ccrook/GraduatedRendererBugFix11366
Fix #11366 Customised graduated renderer labels ignored
2 parents 62ad5ae + 823b57e commit 1770ec1

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

python/core/symbology-ng/qgsgraduatedsymbolrendererv2.sip

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class QgsRendererRangeV2LabelFormat
6363
void setTrimTrailingZeroes( bool trimTrailingZeroes );
6464

6565
//! @note labelForLowerUpper in python bindings
66-
QString labelForRange( double lower, double upper ) const;
66+
QString labelForRange( double lower, double upper ) const /PyName=labelForLowerUpper/;
6767
QString labelForRange( const QgsRendererRangeV2 &range ) const;
6868
QString formatNumber( double value ) const;
6969

@@ -165,7 +165,7 @@ class QgsGraduatedSymbolRendererV2 : QgsFeatureRendererV2
165165
//! @param labelFormat The string appended to classification labels
166166
//! @param updateRanges If true then ranges ending with the old unit string are updated to the new.
167167
//! @note Added in 2.6
168-
void setLabelFormat( const QgsRendererRangeV2LabelFormat &labelFormat, bool updateRanges = true );
168+
void setLabelFormat( const QgsRendererRangeV2LabelFormat &labelFormat, bool updateRanges = false );
169169

170170
//! Reset the label decimal places to a numberbased on the minimum class interval
171171
//! @param updateRanges if true then ranges currently using the default label will be updated

src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,14 @@ QgsRendererRangeV2LabelFormat::QgsRendererRangeV2LabelFormat():
178178
mTrimTrailingZeroes( false ),
179179
mNumberScale( 1.0 ),
180180
mNumberSuffix( "" ),
181-
mReTrailingZeroes( "[.,]?0*$" )
181+
mReTrailingZeroes( "[.,]?0*$" ),
182+
mReNegativeZero("^\\-0(?:[.,]0*)?$")
182183
{
183184
}
184185

185186
QgsRendererRangeV2LabelFormat::QgsRendererRangeV2LabelFormat( QString format, int precision, bool trimTrailingZeroes ):
186-
mReTrailingZeroes( "[.,]?0*$" )
187+
mReTrailingZeroes( "[.,]?0*$" ),
188+
mReNegativeZero("^\\-0(?:[.,]0*)?$")
187189
{
188190
setFormat( format );
189191
setPrecision( precision );
@@ -231,11 +233,13 @@ QString QgsRendererRangeV2LabelFormat::formatNumber( double value ) const
231233
{
232234
QString valueStr=QString::number( value, 'f', mPrecision );
233235
if( mTrimTrailingZeroes ) valueStr=valueStr.replace(mReTrailingZeroes,"");
236+
if( mReNegativeZero.exactMatch(valueStr)) valueStr=valueStr.mid(1);
234237
return valueStr;
235238
}
236239
else
237240
{
238241
QString valueStr=QString::number( value*mNumberScale, 'f', 0 );
242+
if( valueStr == "-0" ) valueStr="0";
239243
if( valueStr != "0" ) valueStr=valueStr+mNumberSuffix;
240244
return valueStr;
241245
}
@@ -935,7 +939,7 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
935939
r->setSourceColorRamp( ramp->clone() );
936940
r->setInvertedColorRamp( inverted );
937941
r->setMode( mode );
938-
r->setLabelFormat( labelFormat, false );
942+
r->setLabelFormat( labelFormat );
939943
r->updateClasses( vlayer, mode, classes );
940944
return r;
941945
}

src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ class CORE_EXPORT QgsRendererRangeV2LabelFormat
104104
double mNumberScale;
105105
QString mNumberSuffix;
106106
QRegExp mReTrailingZeroes;
107+
QRegExp mReNegativeZero;
107108
};
108109

109110
class QgsVectorLayer;
@@ -195,7 +196,7 @@ class CORE_EXPORT QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2
195196
//! @param labelFormat The string appended to classification labels
196197
//! @param updateRanges If true then ranges ending with the old unit string are updated to the new.
197198
//! @note Added in 2.6
198-
void setLabelFormat( const QgsRendererRangeV2LabelFormat &labelFormat, bool updateRanges = true );
199+
void setLabelFormat( const QgsRendererRangeV2LabelFormat &labelFormat, bool updateRanges = false );
199200

200201
//! Reset the label decimal places to a numberbased on the minimum class interval
201202
//! @param updateRanges if true then ranges currently using the default label will be updated

0 commit comments

Comments
 (0)