[lua] Add "focus", "enabled", and "visible" common properties to tabs

This commit is contained in:
Martín Capello 2023-09-13 15:31:47 -03:00 committed by David Capello
parent 60233ba144
commit ba99f41d82

View File

@ -504,6 +504,29 @@ int Dialog_close(lua_State* L)
return 1; return 1;
} }
void set_widget_flags(lua_State* L, int idx, Widget* widget)
{
// Focus magnet
int type = lua_getfield(L, idx, "focus");
if (type != LUA_TNIL && lua_toboolean(L, -1))
widget->setFocusMagnet(true);
lua_pop(L, 1);
// Enabled
type = lua_getfield(L, idx, "enabled");
if (type != LUA_TNIL)
widget->setEnabled(lua_toboolean(L, -1));
lua_pop(L, 1);
// Visible
widget->setVisible(true);
type = lua_getfield(L, idx, "visible");
if (type != LUA_TNIL) {
widget->setVisible(lua_toboolean(L, -1));
}
lua_pop(L, 1);
}
int Dialog_add_widget(lua_State* L, Widget* widget) int Dialog_add_widget(lua_State* L, Widget* widget)
{ {
auto dlg = get_obj<Dialog>(L, 1); auto dlg = get_obj<Dialog>(L, 1);
@ -540,23 +563,11 @@ int Dialog_add_widget(lua_State* L, Widget* widget)
label = lua_tostring(L, -1); label = lua_tostring(L, -1);
lua_pop(L, 1); lua_pop(L, 1);
// Focus magnet set_widget_flags(L, 2, widget);
type = lua_getfield(L, 2, "focus");
if (type != LUA_TNIL && lua_toboolean(L, -1))
widget->setFocusMagnet(true);
lua_pop(L, 1);
// Enabled
type = lua_getfield(L, 2, "enabled");
if (type != LUA_TNIL)
widget->setEnabled(lua_toboolean(L, -1));
lua_pop(L, 1);
// Visible
type = lua_getfield(L, 2, "visible"); type = lua_getfield(L, 2, "visible");
if (type != LUA_TNIL) { if (type != LUA_TNIL) {
visible = lua_toboolean(L, -1); visible = lua_toboolean(L, -1);
widget->setVisible(visible);
} }
lua_pop(L, 1); lua_pop(L, 1);
@ -588,7 +599,6 @@ int Dialog_add_widget(lua_State* L, Widget* widget)
} }
} }
auto hbox = new ui::HBox; auto hbox = new ui::HBox;
if (widget->type() == ui::kButtonWidget) if (widget->type() == ui::kButtonWidget)
hbox->enableFlags(ui::HOMOGENEOUS); hbox->enableFlags(ui::HOMOGENEOUS);
@ -1346,6 +1356,8 @@ int Dialog_tab(lua_State* L)
lua_setfield(L, -2, "tab"); lua_setfield(L, -2, "tab");
}); });
} }
set_widget_flags(L, 2, tabBtn);
} }
lua_pushvalue(L, 1); lua_pushvalue(L, 1);