diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 40f147672..cfb9bf498 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -9,8 +9,10 @@ local Screensaver = require("ui/screensaver") local Search = require("apps/filemanager/filemanagersearch") local SetDefaults = require("apps/filemanager/filemanagersetdefaults") local UIManager = require("ui/uimanager") -local _ = require("gettext") local Screen = Device.screen +local dbg = require("dbg") +local logger = require("logger") +local _ = require("gettext") local FileManagerMenu = InputContainer:extend{ tab_item_table = nil, @@ -66,7 +68,10 @@ end function FileManagerMenu:setUpdateItemTable() for _, widget in pairs(self.registered_widgets) do - widget:addToMainMenu(self.menu_items) + local ok, err = pcall(widget.addToMainMenu, widget, self.menu_items) + if not ok then + logger.err("failed to register widget", widget.name, err) + end end -- setting tab @@ -284,6 +289,14 @@ function FileManagerMenu:setUpdateItemTable() local MenuSorter = require("ui/menusorter") self.tab_item_table = MenuSorter:mergeAndSort("filemanager", self.menu_items, order) end +dbg:guard(FileManagerMenu, 'setUpdateItemTable', + function(self) + local mock_menu_items = {} + for _, widget in pairs(self.registered_widgets) do + -- make sure addToMainMenu works in debug mode + widget:addToMainMenu(mock_menu_items) + end + end) function FileManagerMenu:onShowMenu() local tab_index = G_reader_settings:readSetting("filemanagermenu_tab_index") or 1 diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 78e32cc76..00bd0ae4f 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -4,8 +4,10 @@ local Event = require("ui/event") local InputContainer = require("ui/widget/container/inputcontainer") local Screensaver = require("ui/screensaver") local UIManager = require("ui/uimanager") +local logger = require("logger") +local dbg = require("dbg") local _ = require("gettext") -local Screen = require("device").screen +local Screen = Device.screen local ReaderMenu = InputContainer:new{ tab_item_table = nil, @@ -94,7 +96,10 @@ end function ReaderMenu:setUpdateItemTable() for _, widget in pairs(self.registered_widgets) do - widget:addToMainMenu(self.menu_items) + local ok, err = pcall(widget.addToMainMenu, widget, self.menu_items) + if not ok then + logger.err("failed to register widget", widget.name, err) + end end -- settings tab @@ -183,6 +188,14 @@ function ReaderMenu:setUpdateItemTable() local MenuSorter = require("ui/menusorter") self.tab_item_table = MenuSorter:mergeAndSort("reader", self.menu_items, order) end +dbg:guard(ReaderMenu, 'setUpdateItemTable', + function(self) + local mock_menu_items = {} + for _, widget in pairs(self.registered_widgets) do + -- make sure addToMainMenu works in debug mode + widget:addToMainMenu(mock_menu_items) + end + end) function ReaderMenu:onShowReaderMenu() if self.tab_item_table == nil then diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 8bdb1dc28..e5b7f3dc2 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -8,9 +8,9 @@ local Geom = require("ui/geometry") local dbg = require("dbg") local logger = require("logger") local util = require("ffi/util") -local _ = require("gettext") local Input = Device.input local Screen = Device.screen +local _ = require("gettext") local noop = function() end local MILLION = 1000000