Skip to content

Commit 2597100

Browse files
committed
[FIXED] #11572 ilter Legend By Map Content doesn't maintain point displacement legend
For point vector layer render with 'displacement point', when 'Filter Legend By Map Content' is activated, the legend is not rendered even if it has to be. It's due to QgsPointDisplacementRenderer that embedded the real renderer. The solution proposed in this patch is to get the embedded renderer for QgsPointDisplacementRenderer.
1 parent 4e9e9f4 commit 2597100

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/core/qgsmaphittest.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "qgsmaplayerregistry.h"
44
#include "qgsrendercontext.h"
55
#include "qgsrendererv2.h"
6+
#include "qgspointdisplacementrenderer.h"
67
#include "qgsvectorlayer.h"
78

89

@@ -52,6 +53,12 @@ void QgsMapHitTest::run()
5253
void QgsMapHitTest::runHitTestLayer( QgsVectorLayer* vl, SymbolV2Set& usedSymbols, QgsRenderContext& context )
5354
{
5455
QgsFeatureRendererV2* r = vl->rendererV2();
56+
57+
// Point displacement case
58+
QgsPointDisplacementRenderer* pdr = dynamic_cast<QgsPointDisplacementRenderer*>( r );
59+
if ( pdr )
60+
r = pdr->embeddedRenderer();
61+
5562
bool moreSymbolsPerFeature = r->capabilities() & QgsFeatureRendererV2::MoreSymbolsPerFeature;
5663
r->startRender( context, vl->pendingFields() );
5764
QgsFeature f;

0 commit comments

Comments
 (0)