Lua: Robustify LayoutBuilder integration

"Executing"  'Row { "a", b, "c" }' with unquoted b  previously crashed.

Change-Id: Ifb505c1a836a6041b05911e322cad596c3969e03
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
hjk
2024-05-29 18:34:07 +02:00
parent 8a90428251
commit c96f502c6c

View File

@@ -19,9 +19,15 @@ static void processChildren(T *item, const sol::table &children)
for (size_t i = 1; i <= children.size(); ++i) { for (size_t i = 1; i <= children.size(); ++i) {
const auto &child = children[i]; const auto &child = children[i];
if (child.is<Layout *>()) { if (child.is<Layout *>()) {
item->addItem(*child.get<Layout *>()); if (Layout *layout = child.get<Layout *>())
item->addItem(*layout);
else
item->addItem("ERROR");
} else if (child.is<Widget *>()) { } else if (child.is<Widget *>()) {
item->addItem(*child.get<Widget *>()); if (Widget *widget = child.get<Widget *>())
item->addItem(*widget);
else
item->addItem("ERROR");
} else if (child.is<BaseAspect>()) { } else if (child.is<BaseAspect>()) {
child.get<BaseAspect *>()->addToLayout(*item); child.get<BaseAspect *>()->addToLayout(*item);
} else if (child.is<QString>()) { } else if (child.is<QString>()) {