Fix misleading dox, memory leaks in renderer widgets

This commit is contained in:
Nyall Dawson 2019-08-12 11:02:14 +10:00
parent 3b1a56b835
commit c965f5fb75
5 changed files with 6 additions and 5 deletions

View File

@ -94,7 +94,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/;

View File

@ -110,7 +110,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; }

View File

@ -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() );

View File

@ -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;
}

View File

@ -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();