diff --git a/src/app/qgsgeometryvalidationdock.cpp b/src/app/qgsgeometryvalidationdock.cpp index 7bc32bae93b..172057ba1eb 100644 --- a/src/app/qgsgeometryvalidationdock.cpp +++ b/src/app/qgsgeometryvalidationdock.cpp @@ -265,6 +265,7 @@ void QgsGeometryValidationDock::onCurrentLayerChanged( QgsMapLayer *layer ) { disconnect( mCurrentLayer, &QgsVectorLayer::editingStarted, this, &QgsGeometryValidationDock::onLayerEditingStatusChanged ); disconnect( mCurrentLayer, &QgsVectorLayer::editingStopped, this, &QgsGeometryValidationDock::onLayerEditingStatusChanged ); + disconnect( mCurrentLayer, &QgsVectorLayer::destroyed, this, &QgsGeometryValidationDock::onLayerDestroyed ); } mCurrentLayer = qobject_cast( layer ); @@ -273,6 +274,7 @@ void QgsGeometryValidationDock::onCurrentLayerChanged( QgsMapLayer *layer ) { connect( mCurrentLayer, &QgsVectorLayer::editingStarted, this, &QgsGeometryValidationDock::onLayerEditingStatusChanged ); connect( mCurrentLayer, &QgsVectorLayer::editingStopped, this, &QgsGeometryValidationDock::onLayerEditingStatusChanged ); + connect( mCurrentLayer, &QgsVectorLayer::destroyed, this, &QgsGeometryValidationDock::onLayerDestroyed ); } onLayerEditingStatusChanged(); @@ -297,6 +299,12 @@ void QgsGeometryValidationDock::onLayerEditingStatusChanged() mTopologyChecksPendingButton->setEnabled( enabled ); } +void QgsGeometryValidationDock::onLayerDestroyed( QObject *layer ) +{ + if ( layer == mCurrentLayer ) + mCurrentLayer = nullptr; +} + void QgsGeometryValidationDock::showHighlight( const QModelIndex ¤t ) { QgsVectorLayer *vlayer = qobject_cast( mMapCanvas->currentLayer() ); diff --git a/src/app/qgsgeometryvalidationdock.h b/src/app/qgsgeometryvalidationdock.h index 88cd1751ac6..853161cd430 100644 --- a/src/app/qgsgeometryvalidationdock.h +++ b/src/app/qgsgeometryvalidationdock.h @@ -48,6 +48,7 @@ class QgsGeometryValidationDock : public QgsDockWidget, public Ui_QgsGeometryVal void onCurrentErrorChanged( const QModelIndex ¤t, const QModelIndex &previous ); void onCurrentLayerChanged( QgsMapLayer *layer ); void onLayerEditingStatusChanged(); + void onLayerDestroyed( QObject *layer ); void gotoNextError(); void gotoPreviousError(); void zoomToProblem();