diff --git a/src/Mod/PartDesign/Gui/Command.cpp b/src/Mod/PartDesign/Gui/Command.cpp index dff0d12b7..9fea60778 100644 --- a/src/Mod/PartDesign/Gui/Command.cpp +++ b/src/Mod/PartDesign/Gui/Command.cpp @@ -50,6 +50,9 @@ #include #include #include +#include +#include +#include #include #include @@ -179,19 +182,22 @@ void CmdPartDesignMoveTip::activated(int iMsg) std::vector features = getSelection().getObjectsOfType(Part::Feature::getClassTypeId()); if (features.empty()) return; Gui::ViewProvider* vp = Gui::Application::Instance->getViewProvider(pcActiveBody); - //ViewProviderBody* vpBody; - //if (vp != NULL) - // vpBody = static_cast(vp); std::vector bodyChildren = vp->claimChildren(); + App::DocumentObject* tipFeature = pcActiveBody->Tip.getValue(); + const Gui::ViewProviderDocumentObject* vpFeature = dynamic_cast(Gui::Application::Instance->getViewProvider(tipFeature)); + PartDesignGui::ActiveGuiDoc->signalHighlightObject(*vpFeature, Gui::Blue, false); + openCommand("Move insert point to selected feature"); doCommand(Doc,"App.activeDocument().%s.Tip = App.activeDocument().%s",pcActiveBody->getNameInDocument(),features.front()->getNameInDocument()); // Adjust visibility for (std::vector::const_iterator f = bodyChildren.begin(); f != bodyChildren.end(); f++) { - if ((*f) == pcActiveBody->Tip.getValue()) + if ((*f) == pcActiveBody->Tip.getValue()) { doCommand(Gui,"Gui.activeDocument().show(\"%s\")", (*f)->getNameInDocument()); - else + vpFeature = dynamic_cast(Gui::Application::Instance->getViewProvider(*f)); + PartDesignGui::ActiveGuiDoc->signalHighlightObject(*vpFeature,Gui::Blue,true); + } else doCommand(Gui,"Gui.activeDocument().hide(\"%s\")", (*f)->getNameInDocument()); } }