diff --git a/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp b/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp index bed3c58b31f7..3889a769936e 100644 --- a/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp +++ b/src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp @@ -144,6 +144,17 @@ void QgsRendererV2PropertiesDialog::rendererChanged() QString rendererName = cboRenderers->itemData( cboRenderers->currentIndex() ).toString(); + //Retrieve the previous renderer: from the old active widget if possible, otherwise from the layer + QgsFeatureRendererV2* oldRenderer; + if ( mActiveWidget ) + { + oldRenderer = mActiveWidget->renderer()->clone(); + } + else + { + oldRenderer = mLayer->rendererV2()->clone(); + } + // get rid of old active widget (if any) if ( mActiveWidget ) { @@ -156,7 +167,7 @@ void QgsRendererV2PropertiesDialog::rendererChanged() QgsRendererV2Widget* w = NULL; QgsRendererV2AbstractMetadata* m = QgsRendererV2Registry::instance()->rendererMetadata( rendererName ); if ( m != NULL ) - w = m->createRendererWidget( mLayer, mStyle, mLayer->rendererV2()->clone() ); + w = m->createRendererWidget( mLayer, mStyle, oldRenderer ); if ( w != NULL ) {