Gui: fix endless-loop in View3DInventorSelection::checkGroupOnTop

This commit is contained in:
wmayer
2022-11-16 21:02:49 +01:00
parent 4b17636c5e
commit 4067cc158f

View File

@@ -203,12 +203,24 @@ void View3DInventorSelection::checkGroupOnTop(const SelectionChanges &Reason)
std::vector<ViewProvider*> groups;
auto grpVp = vp;
std::set<ViewProvider*> visited;
for(auto childVp=vp;;childVp=grpVp) {
auto grp = App::GeoFeatureGroupExtension::getGroupOfObject(childVp->getObject());
if(!grp || !grp->getNameInDocument()) break;
if (!grp || !grp->getNameInDocument()) {
break;
}
grpVp = dynamic_cast<ViewProviderDocumentObject*>(
Application::Instance->getViewProvider(grp));
if(!grpVp) break;
if (!grpVp) {
break;
}
// avoid endless-loops
if (!visited.insert(childVp).second) {
break;
}
auto childRoot = grpVp->getChildRoot();
auto modeSwitch = grpVp->getModeSwitch();
auto idx = modeSwitch->whichChild.getValue();