@@ -147,7 +147,11 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
147
147
148
148
if ( vlayer )
149
149
{
150
- QgsSingleSymbolRendererV2* singleRenderer = dynamic_cast < QgsSingleSymbolRendererV2* >( vlayer->rendererV2 () );
150
+ const QgsSingleSymbolRendererV2* singleRenderer = dynamic_cast < const QgsSingleSymbolRendererV2* >( vlayer->rendererV2 () );
151
+ if ( !singleRenderer && vlayer->rendererV2 ()->embeddedRenderer () )
152
+ {
153
+ singleRenderer = dynamic_cast < const QgsSingleSymbolRendererV2* >( vlayer->rendererV2 ()->embeddedRenderer () );
154
+ }
151
155
if ( singleRenderer && singleRenderer->symbol () )
152
156
{
153
157
// single symbol renderer, so add set color/edit symbol actions
@@ -511,12 +515,34 @@ void QgsAppLayerTreeViewMenuProvider::setVectorSymbolColor( const QColor& color
511
515
return ;
512
516
513
517
QgsSingleSymbolRendererV2* singleRenderer = dynamic_cast < QgsSingleSymbolRendererV2* >( layer->rendererV2 () );
514
- if ( !singleRenderer || !singleRenderer->symbol () )
518
+ QgsSymbolV2* newSymbol = nullptr ;
519
+
520
+ if ( singleRenderer && singleRenderer->symbol () )
521
+ newSymbol = singleRenderer->symbol ()->clone ();
522
+
523
+ const QgsSingleSymbolRendererV2* embeddedRenderer = nullptr ;
524
+ if ( !newSymbol && layer->rendererV2 ()->embeddedRenderer () )
525
+ {
526
+ embeddedRenderer = dynamic_cast < const QgsSingleSymbolRendererV2* >( layer->rendererV2 ()->embeddedRenderer () );
527
+ if ( embeddedRenderer && embeddedRenderer->symbol () )
528
+ newSymbol = embeddedRenderer->symbol ()->clone ();
529
+ }
530
+
531
+ if ( !newSymbol )
515
532
return ;
516
533
517
- QgsSymbolV2* newSymbol = singleRenderer->symbol ()->clone ();
518
534
newSymbol->setColor ( color );
519
- singleRenderer->setSymbol ( newSymbol );
535
+ if ( singleRenderer )
536
+ {
537
+ singleRenderer->setSymbol ( newSymbol );
538
+ }
539
+ else if ( embeddedRenderer )
540
+ {
541
+ QgsSingleSymbolRendererV2* newRenderer = embeddedRenderer->clone ();
542
+ newRenderer->setSymbol ( newSymbol );
543
+ layer->rendererV2 ()->setEmbeddedRenderer ( newRenderer );
544
+ }
545
+
520
546
layer->triggerRepaint ();
521
547
mView ->refreshLayerSymbology ( layer->id () );
522
548
}
0 commit comments