예제 #1
0
	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();
		}
	}
예제 #2
0
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();
}