@@ -260,28 +260,32 @@ void QgsRuleBasedRendererV2::Rule::setNormZLevels( const QMap<int, int>& zLevels
260
260
}
261
261
262
262
263
- void QgsRuleBasedRendererV2::Rule::renderFeature ( QgsRuleBasedRendererV2::FeatureToRender& featToRender, QgsRenderContext& context, QgsRuleBasedRendererV2::RenderQueue& renderQueue )
263
+ bool QgsRuleBasedRendererV2::Rule::renderFeature ( QgsRuleBasedRendererV2::FeatureToRender& featToRender, QgsRenderContext& context, QgsRuleBasedRendererV2::RenderQueue& renderQueue )
264
264
{
265
- if ( isFilterOK ( featToRender.feat ) )
265
+ if ( !isFilterOK ( featToRender.feat ) )
266
+ return false ;
267
+
268
+ bool rendered = false ;
269
+
270
+ // create job for this feature and this symbol, add to list of jobs
271
+ if ( mSymbol )
266
272
{
267
- // create job for this feature and this symbol, add to list of jobs
268
- if ( mSymbol )
273
+ // add job to the queue: each symbol's zLevel must be added
274
+ foreach ( int normZLevel, mSymbolNormZLevels )
269
275
{
270
- // add job to the queue: each symbol's zLevel must be added
271
- foreach ( int normZLevel, mSymbolNormZLevels )
272
- {
273
- // QgsDebugMsg(QString("add job at level %1").arg(normZLevel));
274
- renderQueue[normZLevel].jobs .append ( new RenderJob ( featToRender, mSymbol ) );
275
- }
276
+ // QgsDebugMsg(QString("add job at level %1").arg(normZLevel));
277
+ renderQueue[normZLevel].jobs .append ( new RenderJob ( featToRender, mSymbol ) );
276
278
}
279
+ rendered = true ;
280
+ }
277
281
278
- // process children
279
- for ( QList<Rule*>::iterator it = mActiveChildren .begin (); it != mActiveChildren .end (); ++it )
280
- {
281
- Rule* rule = *it;
282
- rule->renderFeature ( featToRender, context, renderQueue );
283
- }
282
+ // process children
283
+ for ( QList<Rule*>::iterator it = mActiveChildren .begin (); it != mActiveChildren .end (); ++it )
284
+ {
285
+ Rule* rule = *it;
286
+ rendered |= rule->renderFeature ( featToRender, context, renderQueue );
284
287
}
288
+ return rendered;
285
289
}
286
290
287
291
@@ -364,7 +368,7 @@ QgsSymbolV2* QgsRuleBasedRendererV2::symbolForFeature( QgsFeature& )
364
368
return 0 ;
365
369
}
366
370
367
- void QgsRuleBasedRendererV2::renderFeature ( QgsFeature& feature,
371
+ bool QgsRuleBasedRendererV2::renderFeature ( QgsFeature& feature,
368
372
QgsRenderContext& context,
369
373
int layer,
370
374
bool selected,
@@ -376,7 +380,7 @@ void QgsRuleBasedRendererV2::renderFeature( QgsFeature& feature,
376
380
mCurrentFeatures .append ( FeatureToRender ( feature, flags ) );
377
381
378
382
// check each active rule
379
- mRootRule ->renderFeature ( mCurrentFeatures .last (), context, mRenderQueue );
383
+ return mRootRule ->renderFeature ( mCurrentFeatures .last (), context, mRenderQueue );
380
384
}
381
385
382
386
0 commit comments