Sketcher Improvement: Always enable geometry creation

==============================================================================

Now you can switch from one tool to the next just by clicking on the next tool
This commit is contained in:
Abdullah Tahiri 2015-05-27 15:50:27 +02:00 committed by wmayer
parent ca356c308e
commit 3b1873f1dc
2 changed files with 15 additions and 9 deletions

View File

@ -103,9 +103,11 @@ void ActivateHandler(Gui::Document *doc,DrawSketchHandler *handler)
{ {
if (doc) { if (doc) {
if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom
(SketcherGui::ViewProviderSketch::getClassTypeId())) (SketcherGui::ViewProviderSketch::getClassTypeId())) {
dynamic_cast<SketcherGui::ViewProviderSketch*> SketcherGui::ViewProviderSketch* vp = dynamic_cast<SketcherGui::ViewProviderSketch*> (doc->getInEdit());
(doc->getInEdit())->activateHandler(handler); 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 // checks if a Sketch Viewprovider is in Edit and is in no special mode
if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom
(SketcherGui::ViewProviderSketch::getClassTypeId())) { (SketcherGui::ViewProviderSketch::getClassTypeId())) {
if (dynamic_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit())-> /*if (dynamic_cast<SketcherGui::ViewProviderSketch*>(doc->getInEdit())->
getSketchMode() == ViewProviderSketch::STATUS_NONE) getSketchMode() == ViewProviderSketch::STATUS_NONE)*/
return true; return true;
} }
} }

View File

@ -309,10 +309,14 @@ void ViewProviderSketch::activateHandler(DrawSketchHandler *newHandler)
void ViewProviderSketch::deactivateHandler() void ViewProviderSketch::deactivateHandler()
{ {
assert(edit); assert(edit);
assert(edit->sketchHandler != 0); if(edit->sketchHandler != 0){
edit->sketchHandler->deactivated(this); std::vector<Base::Vector2D> editCurve;
edit->sketchHandler->unsetCursor(); editCurve.clear();
delete(edit->sketchHandler); drawEdit(editCurve); // erase any line
edit->sketchHandler->deactivated(this);
edit->sketchHandler->unsetCursor();
delete(edit->sketchHandler);
}
edit->sketchHandler = 0; edit->sketchHandler = 0;
Mode = STATUS_NONE; Mode = STATUS_NONE;
} }