From f0cb6d58855bc1028123093e6f90e16d29601680 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Sun, 25 Aug 2019 18:30:01 +0800 Subject: [PATCH] Gui: fix GeoFeatureGroupExtension The change in ViewProviderGeoFeatureGroupExtension.claimChildren() is so that GeoFeatureGroupExtension.getSubObjects() can exclude non direct children. --- .../ViewProviderGeoFeatureGroupExtension.cpp | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp b/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp index 85a8dace75..4e8eba87a0 100644 --- a/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp +++ b/src/Gui/ViewProviderGeoFeatureGroupExtension.cpp @@ -33,7 +33,7 @@ #include "Application.h" #include "Document.h" #include -#include +#include "SoFCUnifiedSelection.h" using namespace Gui; @@ -43,7 +43,7 @@ ViewProviderGeoFeatureGroupExtension::ViewProviderGeoFeatureGroupExtension() { initExtensionType(ViewProviderGeoFeatureGroupExtension::getExtensionClassTypeId()); - pcGroupChildren = new SoGroup(); + pcGroupChildren = new SoFCSelectionRoot; pcGroupChildren->ref(); } @@ -85,13 +85,16 @@ std::vector ViewProviderGeoFeatureGroupExtension::extensio // remove the otherwise handled objects, preserving their order so the order in the TreeWidget is correct std::vector Result; - - // claim for rest content not claimed by any other features - std::remove_copy_if (model.begin(), model.end(), std::back_inserter (Result), - [outSet] (App::DocumentObject* obj) { - return outSet.find (obj) != outSet.end(); - } ); - + for(auto obj : model) { + if(!obj || !obj->getNameInDocument()) + continue; + if(outSet.count(obj)) + obj->setStatus(App::ObjectStatus::GeoExcluded,true); + else { + obj->setStatus(App::ObjectStatus::GeoExcluded,false); + Result.push_back(obj); + } + } return Result; }