void UIWidget::setLayout(const UILayoutPtr& layout) { if(!layout) stdext::throw_exception("attempt to set a nil layout to a widget"); if(m_layout) m_layout->disableUpdates(); layout->setParent(static_self_cast<UIWidget>()); layout->disableUpdates(); for(const UIWidgetPtr& child : m_children) { if(m_layout) m_layout->removeWidget(child); layout->addWidget(child); } if(m_layout) { m_layout->enableUpdates(); m_layout->setParent(nullptr); m_layout->update(); } layout->enableUpdates(); m_layout = layout; }
void UIWidget::destroyChildren() { UILayoutPtr layout = getLayout(); if(layout) layout->disableUpdates(); m_focusedChild = nullptr; m_lockedChildren.clear(); while(!m_children.empty()) { UIWidgetPtr child = m_children.front(); m_children.pop_front(); child->setParent(nullptr); m_layout->removeWidget(child); child->destroy(); } layout->enableUpdates(); }
void UIWidget::setLayout(const UILayoutPtr& layout) { if(m_layout) m_layout->disableUpdates(); layout->setParent(asUIWidget()); layout->disableUpdates(); for(const UIWidgetPtr& child : m_children) { if(m_layout) m_layout->removeWidget(child); layout->addWidget(child); } if(m_layout) { m_layout->enableUpdates(); m_layout->setParent(nullptr); m_layout->update(); } layout->enableUpdates(); m_layout = layout; }