From 6cb5372ad335946b28226b4fb0a05bfc51cfcab2 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Fri, 5 May 2017 19:55:57 -0400 Subject: [PATCH] Fix Dimension double child collection if a dimension references 2 geometries in a View - ie Vertex-Vertex - only count it as 1 child of View --- src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp index 0854ceb83f..b2d9c44a77 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderViewPart.cpp @@ -124,14 +124,19 @@ std::vector ViewProviderViewPart::claimChildren(void) cons try { for(std::vector::const_iterator it = views.begin(); it != views.end(); ++it) { if((*it)->getTypeId().isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { - TechDraw::DrawViewDimension *dim = dynamic_cast(*it); - const std::vector &refs = dim->References2D.getValues(); - for(std::vector::const_iterator it = refs.begin(); it != refs.end(); ++it) { - if(strcmp(getViewPart()->getNameInDocument(), (*it)->getNameInDocument()) == 0) { //wf: isn't this test redundant? - temp.push_back(dim); // if a dim is in the inlist, - // it's a child of this ViewPart?? + //TODO: make a list, then prune it. should be faster? + bool skip = false; + std::string dimName = (*it)->getNameInDocument(); + for (auto& t: temp) { //only add dim once even if it references 2 geometries + std::string tName = t->getNameInDocument(); + if (dimName == tName) { + skip = true; + break; } } + if (!skip) { + temp.push_back(*it); + } } else if ((*it)->getTypeId().isDerivedFrom(TechDraw::DrawHatch::getClassTypeId())) { temp.push_back((*it)); } else if ((*it)->getTypeId().isDerivedFrom(TechDraw::DrawGeomHatch::getClassTypeId())) {