From 010761d1627a62c24ad6af50b0a6a7fc9a8431ca Mon Sep 17 00:00:00 2001 From: jrheinlaender Date: Sun, 25 Aug 2013 18:50:02 +0200 Subject: [PATCH] Fix bug that did not show the correct shape to select a reference (e.g. face) from when editing a SketchBased feature in the tree --- .../Gui/TaskSketchBasedParameters.cpp | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Mod/PartDesign/Gui/TaskSketchBasedParameters.cpp b/src/Mod/PartDesign/Gui/TaskSketchBasedParameters.cpp index 08097599e..76203ad29 100644 --- a/src/Mod/PartDesign/Gui/TaskSketchBasedParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskSketchBasedParameters.cpp @@ -91,26 +91,28 @@ const QString TaskSketchBasedParameters::onAddSelection(const Gui::SelectionChan void TaskSketchBasedParameters::onSelectReference(const bool pressed, const bool edge, const bool face, const bool planar) { // Note: Even if there is no solid, App::Plane and Part::Datum can still be selected - App::DocumentObject* solid = PartDesignGui::ActivePartObject->getPrevSolidFeature(NULL, false); - PartDesign::SketchBased* pcSketchBased = static_cast(vp->getObject()); + App::DocumentObject* prevSolid = PartDesignGui::ActivePartObject->getPrevSolidFeature(vp->getObject(), false); + App::DocumentObject* curSolid = PartDesignGui::ActivePartObject->getPrevSolidFeature(); if (pressed) { Gui::Document* doc = Gui::Application::Instance->activeDocument(); if (doc) { - doc->setHide(pcSketchBased->getNameInDocument()); - if (solid) - doc->setShow(solid->getNameInDocument()); + if (curSolid) + doc->setHide(curSolid->getNameInDocument()); + if (prevSolid) + doc->setShow(prevSolid->getNameInDocument()); } Gui::Selection().clearSelection(); Gui::Selection().addSelectionGate - (new ReferenceSelection(solid, edge, face, planar)); + (new ReferenceSelection(prevSolid, edge, face, planar)); } else { Gui::Selection().rmvSelectionGate(); Gui::Document* doc = Gui::Application::Instance->activeDocument(); if (doc) { - doc->setShow(pcSketchBased->getNameInDocument()); - if (solid) - doc->setHide(solid->getNameInDocument()); + if (curSolid) + doc->setShow(curSolid->getNameInDocument()); + if (prevSolid) + doc->setHide(prevSolid->getNameInDocument()); } } }