Skip to content

Commit

Permalink
fix phantom labels for (actually not) rendered feature (refs #13631)
Browse files Browse the repository at this point in the history
(cherry picked from commit d6f66e & b36cd1f)
  • Loading branch information
jef-n committed Oct 23, 2015
1 parent cd2751f commit bfd2933
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 22 deletions.
40 changes: 21 additions & 19 deletions src/core/qgsvectorlayerrenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ bool QgsVectorLayerRenderer::render()
.setFilterRect( requestExtent )
.setSubsetOfAttributes( mAttrNames, mFields );

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

// labeling - register feature
Q_UNUSED( rendered );
if ( rendered && mContext.labelingEngine() )
if ( rendered )
{
if ( mLabeling )
if ( mContext.labelingEngine() )
{
mContext.labelingEngine()->registerFeature( mLayerID, fet, mContext );
}
if ( mDiagrams )
{
mContext.labelingEngine()->registerDiagramFeature( mLayerID, fet, mContext );
}
}
// new labeling engine
if ( rendered && mContext.labelingEngineV2() )
{
if ( mLabelProvider )
{
mLabelProvider->registerFeature( fet, mContext );
if ( mLabeling )
{
mContext.labelingEngine()->registerFeature( mLayerID, fet, mContext );
}
if ( mDiagrams )
{
mContext.labelingEngine()->registerDiagramFeature( mLayerID, fet, mContext );
}
}
if ( mDiagramProvider )
// new labeling engine
if ( mContext.labelingEngineV2() )
{
mDiagramProvider->registerFeature( fet, mContext );
if ( mLabelProvider )
{
mLabelProvider->registerFeature( fet, mContext );
}
if ( mDiagramProvider )
{
mDiagramProvider->registerFeature( fet, mContext );
}
}
}
}
Expand Down
11 changes: 8 additions & 3 deletions src/core/symbology-ng/qgsrulebasedrendererv2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,12 @@ bool QgsRuleBasedRendererV2::Rule::startRender( QgsRenderContext& context, const
QString sf;
// If there are subfilters present (and it's not a single empty one), group them and join them with OR
if ( subfilters.length() > 1 || subfilters.value( 0 ).trimmed().length() > 0 )
sf = subfilters.join( ") OR (" ).prepend( "(" ).append( ")" );
{
if ( subfilters.contains( "TRUE" ) )
sf = "TRUE";
else
sf = subfilters.join( ") OR (" ).prepend( "(" ).append( ")" );
}

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

bool willrendersomething = false;
Expand All @@ -548,7 +553,7 @@ QgsRuleBasedRendererV2::Rule::RenderResult QgsRuleBasedRendererV2::Rule::renderF
rendered |= rule->renderFeature( featToRender, context, renderQueue ) == Rendered;
}
}
if ( !mIsActive )
if ( !mIsActive || ( mSymbol && !rendered ) )
return Inactive;
else if ( rendered )
return Rendered;
Expand Down

0 comments on commit bfd2933

Please sign in to comment.