From d3d6459484e43cafd1d070479aa268bd69c08b5a Mon Sep 17 00:00:00 2001 From: Vassily Checkin Date: Sat, 24 Jan 2026 11:36:40 -0500 Subject: [PATCH] Sketcher: fix intermittent crash on sketch exit --- src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 8 ++++---- src/Mod/Sketcher/Gui/ViewProviderSketch.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 3c987915d3..ee532450ca 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -3572,9 +3572,9 @@ bool ViewProviderSketch::setEdit(int ModNum) viewProviderParameters.recalculateInitialSolutionWhileDragging); // intercept del key press from main app - listener = new ShortcutListener(this); + listener = std::make_unique(this); - Gui::getMainWindow()->installEventFilter(listener); + Gui::getMainWindow()->installEventFilter(listener.get()); Workbench::enterEditMode(); @@ -3729,8 +3729,8 @@ void ViewProviderSketch::unsetEdit(int ModNum) Workbench::leaveEditMode(); if (listener) { - Gui::getMainWindow()->removeEventFilter(listener); - delete listener; + Gui::getMainWindow()->removeEventFilter(listener.get()); + listener.reset(); } if (isInEditMode()) { diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.h b/src/Mod/Sketcher/Gui/ViewProviderSketch.h index 58e82f2c62..86241746fd 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.h +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.h @@ -993,7 +993,7 @@ private: Gui::CoinPtr pcSketchFaces; Gui::CoinPtr pcSketchFacesToggle; - ShortcutListener* listener; + std::unique_ptr listener; std::unique_ptr editCoinManager;