Core: ViewProvider: Add claimChildrenRecursive

This commit is contained in:
PaddleStroke
2024-06-25 11:34:43 +02:00
parent 2114c6ecce
commit 8ef57be4bb
4 changed files with 46 additions and 2 deletions

View File

@@ -882,12 +882,28 @@ std::vector< App::DocumentObject* > ViewProvider::claimChildren() const
auto vector = getExtensionsDerivedFromType<Gui::ViewProviderExtension>();
for (Gui::ViewProviderExtension* ext : vector) {
std::vector< App::DocumentObject* > nvec = ext->extensionClaimChildren();
if (!nvec.empty())
if (!nvec.empty()){
vec.insert(std::end(vec), std::begin(nvec), std::end(nvec));
}
}
return vec;
}
std::vector< App::DocumentObject* > ViewProvider::claimChildrenRecursive() const
{
std::vector<App::DocumentObject*> children = claimChildren();
for (auto* child : claimChildren()) {
auto* vp = Application::Instance->getViewProvider(child);
if (!vp) { continue; }
std::vector<App::DocumentObject*> nvec = vp->claimChildrenRecursive();
if (!nvec.empty()){
children.insert(std::end(children), std::begin(nvec), std::end(nvec));
}
}
return children;
}
std::vector< App::DocumentObject* > ViewProvider::claimChildren3D() const
{
std::vector< App::DocumentObject* > vec;