Detach Lua Elements properly from their parent

fix-osga-rotate-wildly
uramer 10 months ago
parent 0f60052bb8
commit af8662daee

@ -54,7 +54,7 @@ namespace LuaUi
if (!ext->isRoot())
destroyWidget(ext);
else
ext->widget()->detachFromWidget();
ext->detachFromParent();
}
void detachElements(WidgetExtension* ext)
@ -62,14 +62,14 @@ namespace LuaUi
for (auto* child : ext->children())
{
if (child->isRoot())
child->widget()->detachFromWidget();
child->detachFromParent();
else
detachElements(child);
}
for (auto* child : ext->templateChildren())
{
if (child->isRoot())
child->widget()->detachFromWidget();
child->detachFromParent();
else
detachElements(child);
}
@ -272,9 +272,9 @@ namespace LuaUi
void Element::create(uint64_t depth)
{
assert(!mRoot);
if (mState == New)
{
assert(!mRoot);
mRoot = createWidget(layout(), true, depth);
mLayer = setLayer(mRoot, layout());
updateRootCoord(mRoot);

@ -112,6 +112,12 @@ namespace LuaUi
ext->widget()->attachToWidget(widget());
}
void WidgetExtension::detachFromParent()
{
mParent = nullptr;
widget()->detachFromWidget();
}
WidgetExtension* WidgetExtension::findDeep(std::string_view flagName)
{
for (WidgetExtension* w : mChildren)

@ -35,6 +35,7 @@ namespace LuaUi
bool isRoot() const { return mElementRoot; }
WidgetExtension* getParent() const { return mParent; }
void detachFromParent();
void reset();

Loading…
Cancel
Save