Skip to content

Commit 2c24175

Browse files
committedJan 23, 2017
Fix layer expression scope sometimes not appended to render
context expression scopes
1 parent 17d4d3a commit 2c24175

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed
 

‎src/core/qgslabelingengine.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,15 @@ void QgsLabelingEngine::run( QgsRenderContext& context )
213213
// for each provider: get labels and register them in PAL
214214
Q_FOREACH ( QgsAbstractLabelProvider* provider, mProviders )
215215
{
216+
bool appendedLayerScope = false;
217+
if ( QgsMapLayer* ml = QgsProject::instance()->mapLayer( provider->layerId() ) )
218+
{
219+
appendedLayerScope = true;
220+
context.expressionContext().appendScope( QgsExpressionContextUtils::layerScope( ml ) );
221+
}
216222
processProvider( provider, context, p ); //#spellok
223+
if ( appendedLayerScope )
224+
delete context.expressionContext().popScope();
217225
}
218226

219227

‎src/core/qgsmaprendererjob.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter* painter, QgsLabelingEn
245245
job.renderingTime = -1;
246246

247247
job.context = QgsRenderContext::fromMapSettings( mSettings );
248+
job.context.expressionContext().appendScope( QgsExpressionContextUtils::layerScope( ml ) );
248249
job.context.setPainter( painter );
249250
job.context.setLabelingEngine( labelingEngine2 );
250251
job.context.setCoordinateTransform( ct );

‎tests/src/core/testqgsdiagram.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ class TestQgsDiagram : public QObject
9898
mPointsLayer->setRenderer( symbolRenderer );
9999

100100
// Create map composition to draw on
101+
QgsProject::instance()->addMapLayer( mPointsLayer );
101102
mMapSettings->setLayers( QList<QgsMapLayer*>() << mPointsLayer );
102103

103104
mReport += QLatin1String( "<h1>Diagram Tests</h1>\n" );

0 commit comments

Comments
 (0)
Please sign in to comment.