From 4c51956b896264366b8e422542e25bac8e5c8ba1 Mon Sep 17 00:00:00 2001 From: Leyan Date: Sun, 24 Aug 2014 23:14:17 +0800 Subject: [PATCH] use previous renderer if possible, instead of last applied renderer --- .../symbology-ng/qgsrendererv2propertiesdialog.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 ) {