diff --git a/src/gui/symbology-ng/qgscategorizedsymbolrendererv2widget.cpp b/src/gui/symbology-ng/qgscategorizedsymbolrendererv2widget.cpp index 9348110c9f0..8ae06ff7238 100644 --- a/src/gui/symbology-ng/qgscategorizedsymbolrendererv2widget.cpp +++ b/src/gui/symbology-ng/qgscategorizedsymbolrendererv2widget.cpp @@ -1029,7 +1029,11 @@ void QgsCategorizedSymbolRendererV2Widget::updateSymbolsFromWidget() Q_FOREACH ( int idx, selectedCats ) { QgsSymbolV2* newCatSymbol = mCategorizedSymbol->clone(); - newCatSymbol->setColor( mRenderer->categories().at( idx ).symbol()->color() ); + if ( selectedCats.count() > 1 ) + { + //if updating multiple categories, retain the existing category colors + newCatSymbol->setColor( mRenderer->categories().at( idx ).symbol()->color() ); + } mRenderer->updateCategorySymbol( idx, newCatSymbol ); } emit widgetChanged(); diff --git a/src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp b/src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp index 9e91d43e2f2..943568ab621 100644 --- a/src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp +++ b/src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp @@ -717,7 +717,11 @@ void QgsGraduatedSymbolRendererV2Widget::updateSymbolsFromWidget() { int rangeIdx = idx.row(); QgsSymbolV2* newRangeSymbol = mGraduatedSymbol->clone(); - newRangeSymbol->setColor( mRenderer->ranges()[rangeIdx].symbol()->color() ); + if ( selectedIndexes.count() > 1 ) + { + //if updating multiple ranges, retain the existing range colors + newRangeSymbol->setColor( mRenderer->ranges().at( rangeIdx ).symbol()->color() ); + } mRenderer->updateRangeSymbol( rangeIdx, newRangeSymbol ); } }