Skip to content

Commit bfd2933

Browse files
committedOct 23, 2015
fix phantom labels for (actually not) rendered feature (refs #13631)
(cherry picked from commit d6f66e & b36cd1f)
1 parent cd2751f commit bfd2933

File tree

2 files changed

+29
-22
lines changed

2 files changed

+29
-22
lines changed
 

‎src/core/qgsvectorlayerrenderer.cpp

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ bool QgsVectorLayerRenderer::render()
152152
.setFilterRect( requestExtent )
153153
.setSubsetOfAttributes( mAttrNames, mFields );
154154

155-
if ( !rendererFilter.isEmpty() )
155+
if ( !rendererFilter.isEmpty() && rendererFilter != "TRUE" )
156156
{
157157
featureRequest.setFilterExpression( rendererFilter );
158158
featureRequest.setExpressionContext( mContext.expressionContext() );
@@ -303,28 +303,30 @@ void QgsVectorLayerRenderer::drawRendererV2( QgsFeatureIterator& fit )
303303
bool rendered = mRendererV2->renderFeature( fet, mContext, -1, sel, drawMarker );
304304

305305
// labeling - register feature
306-
Q_UNUSED( rendered );
307-
if ( rendered && mContext.labelingEngine() )
306+
if ( rendered )
308307
{
309-
if ( mLabeling )
308+
if ( mContext.labelingEngine() )
310309
{
311-
mContext.labelingEngine()->registerFeature( mLayerID, fet, mContext );
312-
}
313-
if ( mDiagrams )
314-
{
315-
mContext.labelingEngine()->registerDiagramFeature( mLayerID, fet, mContext );
316-
}
317-
}
318-
// new labeling engine
319-
if ( rendered && mContext.labelingEngineV2() )
320-
{
321-
if ( mLabelProvider )
322-
{
323-
mLabelProvider->registerFeature( fet, mContext );
310+
if ( mLabeling )
311+
{
312+
mContext.labelingEngine()->registerFeature( mLayerID, fet, mContext );
313+
}
314+
if ( mDiagrams )
315+
{
316+
mContext.labelingEngine()->registerDiagramFeature( mLayerID, fet, mContext );
317+
}
324318
}
325-
if ( mDiagramProvider )
319+
// new labeling engine
320+
if ( mContext.labelingEngineV2() )
326321
{
327-
mDiagramProvider->registerFeature( fet, mContext );
322+
if ( mLabelProvider )
323+
{
324+
mLabelProvider->registerFeature( fet, mContext );
325+
}
326+
if ( mDiagramProvider )
327+
{
328+
mDiagramProvider->registerFeature( fet, mContext );
329+
}
328330
}
329331
}
330332
}

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,12 @@ bool QgsRuleBasedRendererV2::Rule::startRender( QgsRenderContext& context, const
435435
QString sf;
436436
// If there are subfilters present (and it's not a single empty one), group them and join them with OR
437437
if ( subfilters.length() > 1 || subfilters.value( 0 ).trimmed().length() > 0 )
438-
sf = subfilters.join( ") OR (" ).prepend( "(" ).append( ")" );
438+
{
439+
if ( subfilters.contains( "TRUE" ) )
440+
sf = "TRUE";
441+
else
442+
sf = subfilters.join( ") OR (" ).prepend( "(" ).append( ")" );
443+
}
439444

440445
// Now join the subfilters with their parent (this) based on if
441446
// * The parent is an else rule
@@ -521,8 +526,8 @@ QgsRuleBasedRendererV2::Rule::RenderResult QgsRuleBasedRendererV2::Rule::renderF
521526
{
522527
//QgsDebugMsg(QString("add job at level %1").arg(normZLevel));
523528
renderQueue[normZLevel].jobs.append( new RenderJob( featToRender, mSymbol ) );
529+
rendered = true;
524530
}
525-
rendered = true;
526531
}
527532

528533
bool willrendersomething = false;
@@ -548,7 +553,7 @@ QgsRuleBasedRendererV2::Rule::RenderResult QgsRuleBasedRendererV2::Rule::renderF
548553
rendered |= rule->renderFeature( featToRender, context, renderQueue ) == Rendered;
549554
}
550555
}
551-
if ( !mIsActive )
556+
if ( !mIsActive || ( mSymbol && !rendered ) )
552557
return Inactive;
553558
else if ( rendered )
554559
return Rendered;

0 commit comments

Comments
 (0)
Please sign in to comment.