@@ -147,7 +147,11 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
147147
148148 if ( vlayer )
149149 {
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+ }
151155 if ( singleRenderer && singleRenderer->symbol () )
152156 {
153157 // single symbol renderer, so add set color/edit symbol actions
@@ -511,12 +515,34 @@ void QgsAppLayerTreeViewMenuProvider::setVectorSymbolColor( const QColor& color
511515 return ;
512516
513517 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 )
515532 return ;
516533
517- QgsSymbolV2* newSymbol = singleRenderer->symbol ()->clone ();
518534 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+
520546 layer->triggerRepaint ();
521547 mView ->refreshLayerSymbology ( layer->id () );
522548}
0 commit comments