Skip to content

Commit

Permalink
Avoid unwanted changed signal emission when setting widget state from…
Browse files Browse the repository at this point in the history
… symbol
  • Loading branch information
nyalldawson committed Dec 4, 2020
1 parent 875981f commit 73eda80
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 2 deletions.
14 changes: 12 additions & 2 deletions src/app/3d/qgspointcloud3dsymbolwidget.cpp
Expand Up @@ -38,14 +38,15 @@ QgsPointCloud3DSymbolWidget::QgsPointCloud3DSymbolWidget( QgsPointCloudLayer *la
if ( symbol )
setSymbol( symbol );

connect( mPointSizeSpinBox, qgis::overload<double>::of( &QDoubleSpinBox::valueChanged ), this, &QgsPointCloud3DSymbolWidget::changed );
connect( mPointSizeSpinBox, qgis::overload<double>::of( &QDoubleSpinBox::valueChanged ), this, &QgsPointCloud3DSymbolWidget::emitChangedSignal );
connect( mRenderingStyleComboBox, qgis::overload< int >::of( &QComboBox::currentIndexChanged ), this, &QgsPointCloud3DSymbolWidget::onRenderingStyleChanged );
connect( mColorRampShaderMinMaxReloadButton, &QPushButton::clicked, this, &QgsPointCloud3DSymbolWidget::reloadColorRampShaderMinMax );
connect( mColorRampShaderWidget, &QgsColorRampShaderWidget::widgetChanged, this, &QgsPointCloud3DSymbolWidget::changed );
connect( mColorRampShaderWidget, &QgsColorRampShaderWidget::widgetChanged, this, &QgsPointCloud3DSymbolWidget::emitChangedSignal );
}

void QgsPointCloud3DSymbolWidget::setSymbol( QgsPointCloud3DSymbol *symbol )
{
mBlockChangedSignals++;
mRenderingStyleComboBox->setCurrentIndex( mRenderingStyleComboBox->findData( symbol->renderingStyle() ) );
if ( symbol )
{
Expand Down Expand Up @@ -80,6 +81,7 @@ void QgsPointCloud3DSymbolWidget::setSymbol( QgsPointCloud3DSymbol *symbol )
}

onRenderingStyleChanged();
mBlockChangedSignals--;
}

QgsPointCloud3DSymbol *QgsPointCloud3DSymbolWidget::symbol() const
Expand Down Expand Up @@ -164,3 +166,11 @@ void QgsPointCloud3DSymbolWidget::onRenderingStyleChanged()
break;
}
}

void QgsPointCloud3DSymbolWidget::emitChangedSignal()
{
if ( mBlockChangedSignals )
return;

emit changed();
}
2 changes: 2 additions & 0 deletions src/app/3d/qgspointcloud3dsymbolwidget.h
Expand Up @@ -36,6 +36,7 @@ class QgsPointCloud3DSymbolWidget : public QWidget, private Ui::QgsPointCloud3DS
private slots:
void reloadColorRampShaderMinMax();
void onRenderingStyleChanged();
void emitChangedSignal();

signals:
void changed();
Expand All @@ -44,6 +45,7 @@ class QgsPointCloud3DSymbolWidget : public QWidget, private Ui::QgsPointCloud3DS
void setColorRampMinMax( double min, double max );

private:
int mBlockChangedSignals = 0;
QgsPointCloudLayer *mLayer = nullptr;

};
Expand Down

0 comments on commit 73eda80

Please sign in to comment.