diff --git a/radio/src/lua/lua_lvgl_widget.cpp b/radio/src/lua/lua_lvgl_widget.cpp index fcc9d7d18..9c187b055 100644 --- a/radio/src/lua/lua_lvgl_widget.cpp +++ b/radio/src/lua/lua_lvgl_widget.cpp @@ -321,14 +321,18 @@ void LvglWidgetObjectBase::parseParam(lua_State *L, const char *key) } } +void LvglWidgetObjectBase::clear() +{ + clearRequest = true; + if (getWindow()) + getWindow()->clear(); +} + bool LvglWidgetObjectBase::callRefs(lua_State *L) { if (clearRequest) { clearRequest = false; - if (getWindow()) { - getWindow()->clear(); - clearChildRefs(L); - } + clearChildRefs(L); return true; } @@ -352,6 +356,11 @@ bool LvglWidgetObjectBase::callRefs(lua_State *L) auto p = LvglWidgetObjectBase::checkLvgl(L, -1); lua_pop(L, 1); if (p) if (!p->callRefs(L)) return false; + if (clearRequest) { + clearRequest = false; + clearChildRefs(L); + return true; + } } return true; diff --git a/radio/src/lua/lua_lvgl_widget.h b/radio/src/lua/lua_lvgl_widget.h index 6b27a3593..74580f5a0 100644 --- a/radio/src/lua/lua_lvgl_widget.h +++ b/radio/src/lua/lua_lvgl_widget.h @@ -82,7 +82,7 @@ class LvglWidgetObjectBase static LvglWidgetObjectBase *checkLvgl(lua_State *L, int index); - void clear() { clearRequest = true; } + void clear(); protected: int luaRef = LUA_REFNIL;