plugin(fix): catch crash in addToMainMenu

pull/2799/head
Qingping Hou 7 years ago
parent fd862f5e28
commit f2671a3e20

@ -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

@ -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

@ -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

Loading…
Cancel
Save