UIWidgetList UIWidget::recursiveGetChildren() { UIWidgetList children; for(const UIWidgetPtr& child : m_children) { UIWidgetList subChildren = child->recursiveGetChildren(); if(!subChildren.empty()) children.insert(children.end(), subChildren.begin(), subChildren.end()); children.push_back(child); } return children; }
UIWidgetList UIWidget::recursiveGetChildrenByMarginPos(const Point& childPos) { UIWidgetList children; if(!containsPaddingPoint(childPos)) return children; for(auto it = m_children.rbegin(); it != m_children.rend(); ++it) { const UIWidgetPtr& child = (*it); if(child->isExplicitlyVisible() && child->containsMarginPoint(childPos)) { UIWidgetList subChildren = child->recursiveGetChildrenByMarginPos(childPos); if(!subChildren.empty()) children.insert(children.end(), subChildren.begin(), subChildren.end()); children.push_back(child); } } return children; }