void GUIElement::_changeParentWidget(GUIWidget* widget) { if (_isDestroyed()) return; bool widgetChanged = false; if(mParentWidget != widget) { // Unregister from current widget's nav-group if(!mNavGroup && mParentWidget) mParentWidget->_getDefaultNavGroup()->unregisterElement(this); widgetChanged = true; } GUIElementBase::_changeParentWidget(widget); if(widgetChanged) { // Register with the new widget's nav-group if(!mNavGroup && mParentWidget) mParentWidget->_getDefaultNavGroup()->registerElement(this); _refreshStyle(); } }
void GUIElementBase::_changeParentWidget(GUIWidget* widget) { assert(!_isDestroyed()); if (mParentWidget != widget) { if (mParentWidget != nullptr) mParentWidget->_unregisterElement(this); if (widget != nullptr) widget->_registerElement(this); } mParentWidget = widget; for(auto& child : mChildren) { child->_changeParentWidget(widget); } _markLayoutAsDirty(); }