36
36
37
37
38
38
QgsRuleBasedRendererV2::Rule::Rule ( QgsSymbolV2* symbol, int scaleMinDenom, int scaleMaxDenom, const QString& filterExp, const QString& label, const QString& description, bool elseRule )
39
- : mParent( nullptr ), mSymbol( symbol )
40
- , mScaleMinDenom( scaleMinDenom ), mScaleMaxDenom( scaleMaxDenom )
41
- , mFilterExp( filterExp ), mLabel( label ), mDescription( description )
39
+ : mParent( nullptr )
40
+ , mSymbol( symbol )
41
+ , mScaleMinDenom( scaleMinDenom )
42
+ , mScaleMaxDenom( scaleMaxDenom )
43
+ , mFilterExp( filterExp )
44
+ , mLabel( label )
45
+ , mDescription( description )
42
46
, mElseRule( elseRule )
43
47
, mIsActive( true )
44
48
, mFilter( nullptr )
@@ -57,20 +61,16 @@ QgsRuleBasedRendererV2::Rule::~Rule()
57
61
58
62
void QgsRuleBasedRendererV2::Rule::initFilter ()
59
63
{
60
- if ( mElseRule || mFilterExp .compare ( " ELSE" , Qt::CaseInsensitive ) == 0 )
64
+ if ( mFilterExp .compare ( " ELSE" , Qt::CaseInsensitive ) == 0 || mFilterExp . trimmed (). isEmpty () )
61
65
{
62
66
mElseRule = true ;
63
67
mFilter = nullptr ;
64
68
}
65
- else if ( ! mFilterExp . isEmpty () )
69
+ else
66
70
{
67
71
delete mFilter ;
68
72
mFilter = new QgsExpression ( mFilterExp );
69
73
}
70
- else
71
- {
72
- mFilter = nullptr ;
73
- }
74
74
}
75
75
76
76
void QgsRuleBasedRendererV2::Rule::appendChild ( Rule* rule )
@@ -442,11 +442,13 @@ bool QgsRuleBasedRendererV2::Rule::startRender( QgsRenderContext& context, const
442
442
443
443
if ( isElse () )
444
444
{
445
- if ( sf.trimmed ().isEmpty () )
445
+ if ( mSymbol || sf.trimmed ().isEmpty () )
446
446
filter = " TRUE" ;
447
447
else
448
448
filter = sf;
449
449
}
450
+ else if ( mSymbol )
451
+ filter = mFilterExp ;
450
452
else if ( !mFilterExp .trimmed ().isEmpty () && !sf.trimmed ().isEmpty () )
451
453
filter = QString ( " (%1) AND (%2)" ).arg ( mFilterExp , sf );
452
454
else if ( !mFilterExp .trimmed ().isEmpty () )
0 commit comments