diff --git a/src/core/qgsmaprendererjob.cpp b/src/core/qgsmaprendererjob.cpp index e7f00492566..feae5b049b7 100644 --- a/src/core/qgsmaprendererjob.cpp +++ b/src/core/qgsmaprendererjob.cpp @@ -358,6 +358,7 @@ LabelRenderJob QgsMapRendererJob::prepareLabelingJob( QPainter *painter, QgsLabe job.context.setPainter( painter ); job.context.setLabelingEngine( labelingEngine2 ); job.context.setExtent( mSettings.visibleExtent() ); + job.context.setFeatureFilterProvider( mFeatureFilterProvider ); // if we can use the cache, let's do it and avoid rendering! bool hasCache = canUseLabelCache && mCache && mCache->hasCacheImage( LABEL_CACHE_ID ); diff --git a/src/core/qgsvectorlayerdiagramprovider.cpp b/src/core/qgsvectorlayerdiagramprovider.cpp index 9ea4fb9e229..bed494a672f 100644 --- a/src/core/qgsvectorlayerdiagramprovider.cpp +++ b/src/core/qgsvectorlayerdiagramprovider.cpp @@ -78,9 +78,13 @@ QList QgsVectorLayerDiagramProvider::labelFeatures( QgsRender QgsFeatureRequest request; request.setFilterRect( layerExtent ); request.setSubsetOfAttributes( attributeNames, mFields ); + const QgsFeatureFilterProvider *featureFilterProvider = context.featureFilterProvider(); + if ( featureFilterProvider ) + { + featureFilterProvider->filterFeatures( qobject_cast( mLayer ), request ); + } QgsFeatureIterator fit = mSource->getFeatures( request ); - QgsFeature fet; while ( fit.nextFeature( fet ) ) {