diff --git a/src/core/qgsvectorlayerlabelprovider.cpp b/src/core/qgsvectorlayerlabelprovider.cpp index e2b2346f7ff2..075d8984b1f1 100644 --- a/src/core/qgsvectorlayerlabelprovider.cpp +++ b/src/core/qgsvectorlayerlabelprovider.cpp @@ -134,28 +134,31 @@ bool QgsVectorLayerLabelProvider::prepare( const QgsRenderContext &context, QSet lyr.mCurFields = mFields; - if ( lyr.drawLabels ) + if ( lyr.drawLabels || lyr.obstacle ) { - // add field indices for label's text, from expression or field - if ( lyr.isExpression ) + if ( lyr.drawLabels ) { - // prepare expression for use in QgsPalLayerSettings::registerFeature() - QgsExpression *exp = lyr.getLabelExpression(); - exp->prepare( &context.expressionContext() ); - if ( exp->hasEvalError() ) + // add field indices for label's text, from expression or field + if ( lyr.isExpression ) { - QgsDebugMsgLevel( "Prepare error:" + exp->evalErrorString(), 4 ); + // prepare expression for use in QgsPalLayerSettings::registerFeature() + QgsExpression *exp = lyr.getLabelExpression(); + exp->prepare( &context.expressionContext() ); + if ( exp->hasEvalError() ) + { + QgsDebugMsgLevel( "Prepare error:" + exp->evalErrorString(), 4 ); + } + Q_FOREACH ( const QString &name, exp->referencedColumns() ) + { + QgsDebugMsgLevel( "REFERENCED COLUMN = " + name, 4 ); + attributeNames.insert( name ); + } } - Q_FOREACH ( const QString &name, exp->referencedColumns() ) + else { - QgsDebugMsgLevel( "REFERENCED COLUMN = " + name, 4 ); - attributeNames.insert( name ); + attributeNames.insert( lyr.fieldName ); } } - else - { - attributeNames.insert( lyr.fieldName ); - } lyr.dataDefinedProperties().prepare( context.expressionContext() ); // add field indices of data defined expression or field