diff --git a/src/App/Document.cpp b/src/App/Document.cpp index 1b9879ee6..519f5d7e4 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -52,6 +52,7 @@ recompute path. Also enables more complicated dependencies beyond trees. #include "PreCompiled.h" #ifndef _PreComp_ +# include # include # include #endif @@ -1452,6 +1453,31 @@ void Document::breakDependency(DocumentObject* pcObject, bool clear) } } } + else if (pt->second->getTypeId().isDerivedFrom(PropertyLinkSubList::getClassTypeId())) { + PropertyLinkSubList* link = static_cast(pt->second); + if (link->getContainer() == pcObject && clear) { + link->setValues(std::vector(), std::vector()); + } + else { + const std::vector& links = link->getValues(); + const std::vector& sub = link->getSubValues(); + std::vector newLinks; + std::vector newSub; + + if (std::find(links.begin(), links.end(), pcObject) != links.end()) { + std::vector::const_iterator jt; + std::vector::const_iterator kt; + for (jt = links.begin(),kt = sub.begin(); jt != links.end() && kt != sub.end(); ++jt, ++kt) { + if (*jt != pcObject) { + newLinks.push_back(*jt); + newSub.push_back(*kt); + } + } + + link->setValues(newLinks, newSub); + } + } + } } } } diff --git a/src/Mod/PartDesign/Gui/ViewProviderPocket.cpp b/src/Mod/PartDesign/Gui/ViewProviderPocket.cpp index 99a56a014..c81840022 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPocket.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderPocket.cpp @@ -122,8 +122,8 @@ bool ViewProviderPocket::onDelete(const std::vector &) { // get the support and Sketch PartDesign::Pocket* pcPocket = static_cast(getObject()); - Sketcher::SketchObject *pcSketch; - App::DocumentObject *pcSupport; + Sketcher::SketchObject *pcSketch = 0; + App::DocumentObject *pcSupport = 0; if (pcPocket->Sketch.getValue()){ pcSketch = static_cast(pcPocket->Sketch.getValue()); pcSupport = pcSketch->Support.getValue();