Skip to content

Commit

Permalink
fix crash by using unique pointers to hold the widget wrappers
Browse files Browse the repository at this point in the history
  • Loading branch information
3nids committed Dec 5, 2019
1 parent a3a7b5f commit 24a5326
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 10 deletions.
16 changes: 8 additions & 8 deletions src/gui/symbology/qgsgraduatedsymbolrendererwidget.cpp
Expand Up @@ -608,7 +608,7 @@ void QgsGraduatedSymbolRendererWidget::mSizeUnitWidget_changed()
QgsGraduatedSymbolRendererWidget::~QgsGraduatedSymbolRendererWidget()
{
delete mModel;
qDeleteAll( mParameterWidgetWrappers );
mParameterWidgetWrappers.clear();
}

QgsFeatureRenderer *QgsGraduatedSymbolRendererWidget::renderer()
Expand Down Expand Up @@ -643,9 +643,9 @@ void QgsGraduatedSymbolRendererWidget::connectUpdateHandlers()
connect( cboSymmetryPoint, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
connect( cboSymmetryPoint->lineEdit(), &QLineEdit::editingFinished, this, &QgsGraduatedSymbolRendererWidget::symmetryPointEditingFinished );

for ( const auto *ppww : qgis::as_const( mParameterWidgetWrappers ) )
for ( const auto &ppww : qgis::as_const( mParameterWidgetWrappers ) )
{
connect( ppww, &QgsAbstractProcessingParameterWidgetWrapper::widgetValueHasChanged, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
connect( ppww.get(), &QgsAbstractProcessingParameterWidgetWrapper::widgetValueHasChanged, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
}
}

Expand All @@ -669,9 +669,9 @@ void QgsGraduatedSymbolRendererWidget::disconnectUpdateHandlers()
disconnect( cboSymmetryPoint, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
disconnect( cboSymmetryPoint->lineEdit(), &QLineEdit::editingFinished, this, &QgsGraduatedSymbolRendererWidget::symmetryPointEditingFinished );

for ( const auto *ppww : qgis::as_const( mParameterWidgetWrappers ) )
for ( const auto &ppww : qgis::as_const( mParameterWidgetWrappers ) )
{
disconnect( ppww, &QgsAbstractProcessingParameterWidgetWrapper::widgetValueHasChanged, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
disconnect( ppww.get(), &QgsAbstractProcessingParameterWidgetWrapper::widgetValueHasChanged, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );
}
}

Expand Down Expand Up @@ -823,7 +823,7 @@ void QgsGraduatedSymbolRendererWidget::updateMethodParameters()
{
while ( mParametersLayout->rowCount() )
mParametersLayout->removeRow( 0 );
qDeleteAll( mParameterWidgetWrappers );
mParameterWidgetWrappers.clear();

const QString methodId = cboGraduatedMode->currentData().toString();
QgsClassificationMethod *method = QgsApplication::classificationMethodRegistry()->method( methodId );
Expand All @@ -839,7 +839,7 @@ void QgsGraduatedSymbolRendererWidget::updateMethodParameters()

connect( ppww, &QgsAbstractProcessingParameterWidgetWrapper::widgetValueHasChanged, this, &QgsGraduatedSymbolRendererWidget::classifyGraduated );

mParameterWidgetWrappers.append( ppww );
mParameterWidgetWrappers.push_back( std::unique_ptr<QgsAbstractProcessingParameterWidgetWrapper>(ppww) );
}
}

Expand Down Expand Up @@ -992,7 +992,7 @@ void QgsGraduatedSymbolRendererWidget::classifyGraduated()
}

QVariantMap parameterValues;
for ( const auto *ppww : qgis::as_const( mParameterWidgetWrappers ) )
for ( const auto &ppww : qgis::as_const( mParameterWidgetWrappers ) )
parameterValues.insert( ppww->parameterDefinition()->name(), ppww->parameterValue() );
method->setParameterValues( parameterValues );

Expand Down
4 changes: 2 additions & 2 deletions src/gui/symbology/qgsgraduatedsymbolrendererwidget.h
Expand Up @@ -23,12 +23,12 @@
#include "qgis_sip.h"
#include "qgsrendererwidget.h"
#include "qgsproxystyle.h"
#include "qgsprocessingwidgetwrapper.h"

#include "ui_qgsgraduatedsymbolrendererwidget.h"

#include "qgis_gui.h"

class QgsAbstractProcessingParameterWidgetWrapper;

#ifndef SIP_RUN
/// @cond PRIVATE
Expand Down Expand Up @@ -187,7 +187,7 @@ class GUI_EXPORT QgsGraduatedSymbolRendererWidget : public QgsRendererWidget, pr

QDoubleValidator *mSymmetryPointValidator;

QList< QgsAbstractProcessingParameterWidgetWrapper * > mParameterWidgetWrappers;
std::vector< std::unique_ptr< QgsAbstractProcessingParameterWidgetWrapper >> mParameterWidgetWrappers;
};


Expand Down

0 comments on commit 24a5326

Please sign in to comment.