From 04446f9d5627cc74852800573432561a184a1a31 Mon Sep 17 00:00:00 2001 From: Jean Felder Date: Tue, 19 Nov 2024 10:09:15 +0100 Subject: [PATCH] qgisapp: Ensure to properly delete 2D MapCanvasDock When closing a 2D canvas dock, QGIS sometimes crashes. This is because when the widget helper is closed, the canvas is closed. However, some signals of the canvas widget may still be called after it is called. Hence, the crash. This issue is fixed by calling `deleteLater()` instead of `delete` to ensure a proper deletion which properly takes into account the signals. --- src/app/qgisapp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 6b1eee95031..e71ff46bc0a 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -4786,7 +4786,7 @@ QgsMapCanvasDockWidget *QgisApp::createNewMapCanvasDock( const QString &name, bo connect( mapCanvasWidget->dockableWidgetHelper(), &QgsDockableWidgetHelper::closed, this, [ this, mapCanvasWidget] { mOpen2DMapViews.remove( mapCanvasWidget ); - delete mapCanvasWidget; + mapCanvasWidget->deleteLater(); markDirty(); } ); connect( mapCanvasWidget, &QgsMapCanvasDockWidget::renameTriggered, this, &QgisApp::renameView );