diff --git a/src/core/pal/layer.cpp b/src/core/pal/layer.cpp index 3ba467b6ea6..f07617bb8ef 100644 --- a/src/core/pal/layer.cpp +++ b/src/core/pal/layer.cpp @@ -199,7 +199,7 @@ bool Layer::registerFeature( QgsLabelFeature *lf ) addedFeature = true; } - if ( !featureGeomIsObstacleGeom ) + if ( lf->isObstacle() && !featureGeomIsObstacleGeom ) { //do the same for the obstacle geometry simpleGeometries.reset( Util::unmulti( lf->obstacleGeometry() ) ); diff --git a/src/core/qgspallabeling.cpp b/src/core/qgspallabeling.cpp index f2c1e61ff4b..fb0603344f5 100644 --- a/src/core/qgspallabeling.cpp +++ b/src/core/qgspallabeling.cpp @@ -1964,7 +1964,7 @@ void QgsPalLayerSettings::registerFeature( const QgsFeature &f, QgsRenderContext } geos::unique_ptr geosObstacleGeomClone; - if ( !obstacleGeometry.isNull() ) + if ( isObstacle && !obstacleGeometry.isNull() ) { geosObstacleGeomClone = QgsGeos::asGeos( obstacleGeometry ); } @@ -2442,7 +2442,7 @@ void QgsPalLayerSettings::registerFeature( const QgsFeature &f, QgsRenderContext ( *labelFeature )->setIsObstacle( isObstacle ); double featObstacleFactor = obstacleFactor; - if ( mDataDefinedProperties.isActive( QgsPalLayerSettings::ObstacleFactor ) ) + if ( isObstacle && mDataDefinedProperties.isActive( QgsPalLayerSettings::ObstacleFactor ) ) { context.expressionContext().setOriginalValueVariable( featObstacleFactor ); exprVal = mDataDefinedProperties.value( QgsPalLayerSettings::ObstacleFactor, context.expressionContext() );