diff --git a/src/Mod/Sketcher/Gui/Command.cpp b/src/Mod/Sketcher/Gui/Command.cpp index 64a90c989..b91d61e2e 100644 --- a/src/Mod/Sketcher/Gui/Command.cpp +++ b/src/Mod/Sketcher/Gui/Command.cpp @@ -223,6 +223,15 @@ CmdSketcherLeaveSketch::CmdSketcherLeaveSketch() void CmdSketcherLeaveSketch::activated(int iMsg) { + Gui::Document *doc = getActiveGuiDocument(); + + if (doc) { + // checks if a Sketch Viewprovider is in Edit and is in no special mode + SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); + if (vp && vp->getSketchMode() != ViewProviderSketch::STATUS_NONE) + vp->purgeHandler(); + } + openCommand("Sketch changed"); doCommand(Gui,"Gui.activeDocument().resetEdit()"); doCommand(Doc,"App.ActiveDocument.recompute()"); @@ -236,7 +245,7 @@ bool CmdSketcherLeaveSketch::isActive(void) if (doc) { // checks if a Sketch Viewprovider is in Edit and is in no special mode SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); - if (vp && vp->getSketchMode() == ViewProviderSketch::STATUS_NONE) + if (vp /*&& vp->getSketchMode() == ViewProviderSketch::STATUS_NONE*/) return true; } return false;