From dcd5db38f9d7c305a1ce34b83f2af11862a8d900 Mon Sep 17 00:00:00 2001 From: jfrickmann Date: Sat, 11 Sep 2021 13:36:10 -0400 Subject: [PATCH] Set error message if script fails in create() function --- radio/src/lua/widgets.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/radio/src/lua/widgets.cpp b/radio/src/lua/widgets.cpp index 23807e9e5..5bb1fe870 100644 --- a/radio/src/lua/widgets.cpp +++ b/radio/src/lua/widgets.cpp @@ -228,6 +228,8 @@ struct eventData { class LuaWidget: public Widget { + friend class LuaWidgetFactory; + public: LuaWidget(const WidgetFactory * factory, FormGroup * parent, const rect_t & rect, WidgetPersistentData * persistentData, int luaWidgetDataRef): Widget(factory, parent, rect, persistentData), @@ -353,11 +355,12 @@ class LuaWidgetFactory: public WidgetFactory l_pushtableint(option->name, value); } - if (lua_pcall(lsWidgets, 2, 1, 0) != 0) { - TRACE("Error in widget %s create() function: %s", getName(), lua_tostring(lsWidgets, -1)); - } - int widgetData = luaL_ref(lsWidgets, LUA_REGISTRYINDEX); - return new LuaWidget(this, parent, rect, persistentData, widgetData); + bool err = lua_pcall(lsWidgets, 2, 1, 0); + int widgetData = err ? LUA_NOREF : luaL_ref(lsWidgets, LUA_REGISTRYINDEX); + LuaWidget* lw = new LuaWidget(this, parent, rect, persistentData, widgetData); + if (err) + lw->setErrorMessage("create()"); + return lw; } protected: