diff --git a/src/app/3d/qgs3dmapconfigwidget.cpp b/src/app/3d/qgs3dmapconfigwidget.cpp index 7b32371b4e0..1e06d5ef630 100644 --- a/src/app/3d/qgs3dmapconfigwidget.cpp +++ b/src/app/3d/qgs3dmapconfigwidget.cpp @@ -81,7 +81,7 @@ Qgs3DMapConfigWidget::Qgs3DMapConfigWidget( Qgs3DMapSettings *map, QgsMapCanvas QgsMeshTerrainGenerator *meshTerrain = static_cast( terrainGen ); cboTerrainLayer->setFilters( QgsMapLayerProxyModel::MeshLayer ); cboTerrainLayer->setLayer( meshTerrain->meshLayer() ); - mMeshSymbolWidget->setLayer( meshTerrain->meshLayer() ); + mMeshSymbolWidget->setLayer( meshTerrain->meshLayer(), false ); mMeshSymbolWidget->setSymbol( meshTerrain->symbol() ); spinTerrainScale->setValue( meshTerrain->symbol().verticaleScale() ); } @@ -277,12 +277,11 @@ void Qgs3DMapConfigWidget::onTerrainLayerChanged() QgsMeshLayer *meshLayer = qobject_cast( cboTerrainLayer->currentLayer() ); if ( meshLayer ) { + QgsMeshLayer *oldLayer = mMeshSymbolWidget->meshLayer(); mMeshSymbolWidget->setLayer( meshLayer, false ); - if ( mMeshSymbolWidget->symbol().colorRampShader().colorRampItemList().count() == 0 ) - { + if ( oldLayer != meshLayer ) mMeshSymbolWidget->reloadColorRampShaderMinMax(); - } } } } diff --git a/src/app/3d/qgsmesh3dsymbolwidget.cpp b/src/app/3d/qgsmesh3dsymbolwidget.cpp index de67c7fdefe..45d55a7d2c4 100644 --- a/src/app/3d/qgsmesh3dsymbolwidget.cpp +++ b/src/app/3d/qgsmesh3dsymbolwidget.cpp @@ -63,6 +63,8 @@ void QgsMesh3dSymbolWidget::setSymbol( const QgsMesh3DSymbol &symbol ) mComboBoxTextureType->setCurrentIndex( symbol.renderingStyle() ); mMeshSingleColorButton->setColor( symbol.singleMeshColor() ); mColorRampShaderWidget->setFromShader( symbol.colorRampShader() ); + mColorRampShaderWidget->setMinimumMaximumAndClassify( symbol.colorRampShader().minimumValue(), + symbol.colorRampShader().maximumValue() ); setColorRampMinMax( symbol.colorRampShader().minimumValue(), symbol.colorRampShader().maximumValue() ); } @@ -90,6 +92,8 @@ void QgsMesh3dSymbolWidget::setLayer( QgsMeshLayer *meshLayer, bool updateSymbol reloadColorRampShaderMinMax(); //As the symbol is new, the Color ramp shader needs to be initialized with min max value } +QgsMeshLayer *QgsMesh3dSymbolWidget::meshLayer() const {return mLayer;} + double QgsMesh3dSymbolWidget::lineEditValue( const QLineEdit *lineEdit ) const { if ( lineEdit->text().isEmpty() ) diff --git a/src/app/3d/qgsmesh3dsymbolwidget.h b/src/app/3d/qgsmesh3dsymbolwidget.h index 66c50c4431c..486434c5744 100644 --- a/src/app/3d/qgsmesh3dsymbolwidget.h +++ b/src/app/3d/qgsmesh3dsymbolwidget.h @@ -34,6 +34,7 @@ class QgsMesh3dSymbolWidget : public QWidget, private Ui::QgsMesh3dPropsWidget QgsMesh3DSymbol symbol() const; void setLayer( QgsMeshLayer *meshLayer, bool updateSymbol = true ); + QgsMeshLayer *meshLayer() const; void setSymbol( const QgsMesh3DSymbol &symbol ); void enableVerticalSetting( bool isEnable );