Skip to content

Commit

Permalink
Fix misleading dox, memory leaks in renderer widgets
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Aug 12, 2019
1 parent fb0bb17 commit 3d5845e
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 5 deletions.
Expand Up @@ -65,7 +65,6 @@ Returns new instance of settings widget for the renderer. Returns ``None`` on er
The ``oldRenderer`` argument may refer to previously used renderer (or it is ``None``).
If not ``None``, it may be used to initialize GUI of the widget from the previous settings.
The old renderer does not have to be of the same type as returned by createRenderer().
When using ``oldRenderer`` make sure to make a copy of it - it will be deleted afterwards.
%End

virtual QgsFeatureRenderer *createRendererFromSld( QDomElement &elem, QgsWkbTypes::GeometryType geomType ) /Factory/;
Expand Down
1 change: 0 additions & 1 deletion src/core/symbology/qgsrendererregistry.h
Expand Up @@ -85,7 +85,6 @@ class CORE_EXPORT QgsRendererAbstractMetadata
* The \a oldRenderer argument may refer to previously used renderer (or it is NULLPTR).
* If not NULLPTR, it may be used to initialize GUI of the widget from the previous settings.
* The old renderer does not have to be of the same type as returned by createRenderer().
* When using \a oldRenderer make sure to make a copy of it - it will be deleted afterwards.
*/
virtual QgsRendererWidget *createRendererWidget( QgsVectorLayer *layer, QgsStyle *style, QgsFeatureRenderer *oldRenderer ) SIP_FACTORY
{ Q_UNUSED( layer ) Q_UNUSED( style ); Q_UNUSED( oldRenderer ); return nullptr; }
Expand Down
3 changes: 2 additions & 1 deletion src/gui/symbology/qgsinvertedpolygonrendererwidget.cpp
Expand Up @@ -133,7 +133,8 @@ void QgsInvertedPolygonRendererWidget::mRendererComboBox_currentIndexChanged( in
QgsRendererAbstractMetadata *m = QgsApplication::rendererRegistry()->rendererMetadata( rendererId );
if ( m )
{
mEmbeddedRendererWidget.reset( m->createRendererWidget( mLayer, mStyle, const_cast<QgsFeatureRenderer *>( mRenderer->embeddedRenderer() )->clone() ) );
std::unique_ptr< QgsFeatureRenderer > oldRenderer( mRenderer->embeddedRenderer()->clone() );
mEmbeddedRendererWidget.reset( m->createRendererWidget( mLayer, mStyle, oldRenderer.get() ) );
connect( mEmbeddedRendererWidget.get(), &QgsRendererWidget::widgetChanged, this, &QgsInvertedPolygonRendererWidget::widgetChanged );
mEmbeddedRendererWidget->setContext( mContext );
mEmbeddedRendererWidget->setDockMode( this->dockMode() );
Expand Down
3 changes: 2 additions & 1 deletion src/gui/symbology/qgspointclusterrendererwidget.cpp
Expand Up @@ -137,7 +137,8 @@ void QgsPointClusterRendererWidget::mRendererComboBox_currentIndexChanged( int i
if ( m )
{
// unfortunately renderer conversion is only available through the creation of a widget...
QgsRendererWidget *tempRenderWidget = m->createRendererWidget( mLayer, mStyle, mRenderer->embeddedRenderer()->clone() );
std::unique_ptr< QgsFeatureRenderer > oldRenderer( mRenderer->embeddedRenderer()->clone() );
QgsRendererWidget *tempRenderWidget = m->createRendererWidget( mLayer, mStyle, oldRenderer.get() );
mRenderer->setEmbeddedRenderer( tempRenderWidget->renderer()->clone() );
delete tempRenderWidget;
}
Expand Down
3 changes: 2 additions & 1 deletion src/gui/symbology/qgspointdisplacementrendererwidget.cpp
Expand Up @@ -245,7 +245,8 @@ void QgsPointDisplacementRendererWidget::mRendererComboBox_currentIndexChanged(
if ( m )
{
// unfortunately renderer conversion is only available through the creation of a widget...
QgsRendererWidget *tempRenderWidget = m->createRendererWidget( mLayer, mStyle, mRenderer->embeddedRenderer()->clone() );
std::unique_ptr< QgsFeatureRenderer> oldRenderer( mRenderer->embeddedRenderer()->clone() );
QgsRendererWidget *tempRenderWidget = m->createRendererWidget( mLayer, mStyle, oldRenderer.get() );
mRenderer->setEmbeddedRenderer( tempRenderWidget->renderer()->clone() );
delete tempRenderWidget;
emit widgetChanged();
Expand Down

0 comments on commit 3d5845e

Please sign in to comment.