@@ -87,6 +87,11 @@ void QgsGeometryValidationDock::setGeometryValidationModel( QgsGeometryValidatio
87
87
connect ( mGeometryValidationModel , &QgsGeometryValidationModel::dataChanged, this , &QgsGeometryValidationDock::onDataChanged );
88
88
connect ( mGeometryValidationModel , &QgsGeometryValidationModel::rowsRemoved, this , &QgsGeometryValidationDock::updateCurrentError );
89
89
connect ( mGeometryValidationModel , &QgsGeometryValidationModel::rowsInserted, this , &QgsGeometryValidationDock::onRowsInserted );
90
+
91
+ // We cannot connect to the regular aboutToRemoveRows signal, because we need this to happen
92
+ // before the currentIndex is changed.
93
+ connect ( mGeometryValidationModel , &QgsGeometryValidationModel::aboutToRemoveSingleGeometryCheck, this , [this ]() { mPreventZoomToError = true ; } );
94
+ connect ( mGeometryValidationModel , &QgsGeometryValidationModel::rowsRemoved, this , [this ]() { mPreventZoomToError = false ; } );
90
95
}
91
96
92
97
void QgsGeometryValidationDock::gotoNextError ()
@@ -244,6 +249,20 @@ void QgsGeometryValidationDock::onCurrentErrorChanged( const QModelIndex ¤
244
249
245
250
bool hasFeature = !FID_IS_NULL ( current.data ( QgsGeometryValidationModel::ErrorFeatureIdRole ) );
246
251
mZoomToFeatureButton ->setEnabled ( hasFeature );
252
+
253
+ if ( !mPreventZoomToError )
254
+ {
255
+ switch ( mLastZoomToAction )
256
+ {
257
+ case ZoomToProblem:
258
+ zoomToProblem ();
259
+ break ;
260
+
261
+ case ZoomToFeature:
262
+ zoomToFeature ();
263
+ break ;
264
+ }
265
+ }
247
266
}
248
267
249
268
void QgsGeometryValidationDock::onCurrentLayerChanged ( QgsMapLayer *layer )
0 commit comments