AutoLayoutContainer::~AutoLayoutContainer() { std::list<Widget*>::iterator currChild(mChildren.begin()); std::list<Widget*>::iterator endChildren(mChildren.end()); for(; currChild != endChildren; ++currChild) { (*currChild)->removeWidgetListener(this); } }
void VBox::fitChildrenToAxis() { std::list<Widget*>::iterator currChild(mChildren.begin()); std::list<Widget*>::iterator endChildren(mChildren.end()); int containerWidth = getWidth() - mChildrenOffset; for(; currChild != endChildren; ++currChild) { (*currChild)->_setWidthWithoutNotifying(containerWidth); } }
void VBox::relayoutChildren() { std::list<Widget*>::iterator currChild(mAddedOrder.begin()); std::list<Widget*>::iterator endChildren(mAddedOrder.end()); int height = 0; for(; currChild != endChildren; ++currChild) { Widget* child = (*currChild); if(child->isVisible()) { child->setPosition(mChildrenOffset, height); height += child->getHeight() + mPadding; } } }
int VBox::getVisibleChildrenHeight() const { std::list<Widget*>::const_iterator currChild(mAddedOrder.begin()); std::list<Widget*>::const_iterator endChildren(mAddedOrder.end()); int height = 0; for(; currChild != endChildren; ++currChild) { Widget *child = (*currChild); if(child->isVisible()) { height += child->getHeight(); } } return height; }
int VBox:: getMaxVisibleChildWidth() const { std::list<Widget*>::const_iterator currChild(mChildren.begin()); std::list<Widget*>::const_iterator endChildren(mChildren.end()); int max = 0; for(; currChild != endChildren; ++currChild) { Widget *child = (*currChild); if(child->isVisible()) { max = std::max(child->getWidth(), max); } } return max; }