Work around MyGUI bug in a less destructive way

macos_ci_fix
uramer 1 year ago
parent b9c986b0b8
commit 6081dcc43c

@ -92,15 +92,21 @@ namespace LuaUi
w->widget()->detachFromWidget();
}
void WidgetExtension::updateVisible()
{
// workaround for MyGUI bug
// parent visibility doesn't affect added children
MyGUI::Widget* widget = this->widget();
MyGUI::Widget* parent = widget->getParent();
bool inheritedVisible = widget->getVisible() && (parent == nullptr || parent->getInheritedVisible());
widget->setVisible(inheritedVisible);
}
void WidgetExtension::attach(WidgetExtension* ext)
{
ext->mParent = this;
ext->mTemplateChild = false;
ext->widget()->attachToWidget(mSlot->widget());
// workaround for MyGUI bug
// parent visibility doesn't affect added children
ext->widget()->setVisible(!ext->widget()->getVisible());
ext->widget()->setVisible(!ext->widget()->getVisible());
}
void WidgetExtension::attachTemplate(WidgetExtension* ext)
@ -108,10 +114,6 @@ namespace LuaUi
ext->mParent = this;
ext->mTemplateChild = true;
ext->widget()->attachToWidget(widget());
// workaround for MyGUI bug
// parent visibility doesn't affect added children
ext->widget()->setVisible(!ext->widget()->getVisible());
ext->widget()->setVisible(!ext->widget()->getVisible());
}
WidgetExtension* WidgetExtension::findDeep(std::string_view flagName)
@ -256,6 +258,8 @@ namespace LuaUi
void WidgetExtension::updateCoord()
{
updateVisible();
MyGUI::IntCoord oldCoord = mWidget->getCoord();
MyGUI::IntCoord newCoord = calculateCoord();

@ -173,6 +173,8 @@ namespace LuaUi
void focusLoss(MyGUI::Widget*, MyGUI::Widget*);
std::optional<std::function<void(WidgetExtension*, MyGUI::IntCoord)>> mOnCoordChange;
void updateVisible();
};
class LuaWidget : public MyGUI::Widget, public WidgetExtension

Loading…
Cancel
Save