Skip to content

Commit d796ade

Browse files
committedJan 18, 2016
Also render all parent features on refined rules
Fix #13708
1 parent 433e3b8 commit d796ade

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed
 

‎src/core/symbology-ng/qgsrulebasedrendererv2.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,13 @@
3636

3737

3838
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 )
4246
, mElseRule( elseRule )
4347
, mIsActive( true )
4448
, mFilter( nullptr )
@@ -57,20 +61,16 @@ QgsRuleBasedRendererV2::Rule::~Rule()
5761

5862
void QgsRuleBasedRendererV2::Rule::initFilter()
5963
{
60-
if ( mElseRule || mFilterExp.compare( "ELSE", Qt::CaseInsensitive ) == 0 )
64+
if ( mFilterExp.compare( "ELSE", Qt::CaseInsensitive ) == 0 || mFilterExp.trimmed().isEmpty() )
6165
{
6266
mElseRule = true;
6367
mFilter = nullptr;
6468
}
65-
else if ( !mFilterExp.isEmpty() )
69+
else
6670
{
6771
delete mFilter;
6872
mFilter = new QgsExpression( mFilterExp );
6973
}
70-
else
71-
{
72-
mFilter = nullptr;
73-
}
7474
}
7575

7676
void QgsRuleBasedRendererV2::Rule::appendChild( Rule* rule )
@@ -442,11 +442,13 @@ bool QgsRuleBasedRendererV2::Rule::startRender( QgsRenderContext& context, const
442442

443443
if ( isElse() )
444444
{
445-
if ( sf.trimmed().isEmpty() )
445+
if ( mSymbol || sf.trimmed().isEmpty() )
446446
filter = "TRUE";
447447
else
448448
filter = sf;
449449
}
450+
else if ( mSymbol )
451+
filter = mFilterExp;
450452
else if ( !mFilterExp.trimmed().isEmpty() && !sf.trimmed().isEmpty() )
451453
filter = QString( "(%1) AND (%2)" ).arg( mFilterExp, sf );
452454
else if ( !mFilterExp.trimmed().isEmpty() )

0 commit comments

Comments
 (0)
Please sign in to comment.