diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index 4cfdbf4f7..33fb241b2 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -103,9 +103,11 @@ void ActivateHandler(Gui::Document *doc,DrawSketchHandler *handler) { if (doc) { if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom - (SketcherGui::ViewProviderSketch::getClassTypeId())) - dynamic_cast - (doc->getInEdit())->activateHandler(handler); + (SketcherGui::ViewProviderSketch::getClassTypeId())) { + SketcherGui::ViewProviderSketch* vp = dynamic_cast (doc->getInEdit()); + vp->purgeHandler(); + vp->activateHandler(handler); + } } } @@ -115,8 +117,8 @@ bool isCreateGeoActive(Gui::Document *doc) // checks if a Sketch Viewprovider is in Edit and is in no special mode if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom (SketcherGui::ViewProviderSketch::getClassTypeId())) { - if (dynamic_cast(doc->getInEdit())-> - getSketchMode() == ViewProviderSketch::STATUS_NONE) + /*if (dynamic_cast(doc->getInEdit())-> + getSketchMode() == ViewProviderSketch::STATUS_NONE)*/ return true; } } diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index e8a4f22b0..7d6bf3c29 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -309,10 +309,14 @@ void ViewProviderSketch::activateHandler(DrawSketchHandler *newHandler) void ViewProviderSketch::deactivateHandler() { assert(edit); - assert(edit->sketchHandler != 0); - edit->sketchHandler->deactivated(this); - edit->sketchHandler->unsetCursor(); - delete(edit->sketchHandler); + if(edit->sketchHandler != 0){ + std::vector editCurve; + editCurve.clear(); + drawEdit(editCurve); // erase any line + edit->sketchHandler->deactivated(this); + edit->sketchHandler->unsetCursor(); + delete(edit->sketchHandler); + } edit->sketchHandler = 0; Mode = STATUS_NONE; }