From 653ff6443867406c3d6dc2a2b541aec4f038e39e Mon Sep 17 00:00:00 2001 From: Frans de Jonge Date: Sat, 4 Mar 2017 11:34:25 +0100 Subject: [PATCH] MenuSorter: handle disabled --- frontend/ui/menusorter.lua | 13 ++++++++++++- spec/unit/readerfooter_spec.lua | 29 ++++++++++------------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/frontend/ui/menusorter.lua b/frontend/ui/menusorter.lua index e00454126..e6a0141bd 100644 --- a/frontend/ui/menusorter.lua +++ b/frontend/ui/menusorter.lua @@ -151,7 +151,18 @@ function MenuSorter:magic(item_table, order) for i,top_menu in ipairs(self.menu_table["KOMenu:menu_buttons"]) do self.menu_table["KOMenu:menu_buttons"][i] = self.menu_table["KOMenu:menu_buttons"][i].sub_item_table end - + + -- handle disabled + DEBUG("MenuSorter: order.KOMenu_disabled", order.KOMenu_disabled) + if order.KOMenu__disabled then + for _,item in ipairs(order.KOMenu_disabled) do + if item_table[item] then + -- remove reference from input so it won't show up as orphaned + item_table[item] = nil + end + end + end + -- remove top level reference before orphan handling item_table["KOMenu:menu_buttons"] = nil --attach orphans based on menu_hint diff --git a/spec/unit/readerfooter_spec.lua b/spec/unit/readerfooter_spec.lua index af4fd7f59..7969c9439 100644 --- a/spec/unit/readerfooter_spec.lua +++ b/spec/unit/readerfooter_spec.lua @@ -14,8 +14,8 @@ describe("Readerfooter module", function() purgeDir = require("ffi/util").purgeDir Screen = require("device").screen - function tapFooterMenu(menu_tab_items, menu_title) - local status_bar = MenuSorter:findById(menu_tab_items, "status_bar") or nil + function tapFooterMenu(menu_items, menu_title) + local status_bar = menu_items.status_bar if status_bar then for _, subitem in ipairs(status_bar.sub_item_table) do @@ -172,17 +172,9 @@ describe("Readerfooter module", function() local readerui = ReaderUI:new{ document = DocumentRegistry:openDocument(sample_pdf), } - local fake_menu = { - ["KOMenu:menu_buttons"] = {}, - setting = {} - } + local fake_menu = {setting = {}} local footer = readerui.view.footer footer:addToMainMenu(fake_menu) - local fake_order = { - ["KOMenu:menu_buttons"] = {"setting"}, - ["setting"] = {"status_bar"}, - } - fake_menu = MenuSorter:sort(fake_menu, fake_order) footer:resetLayout() footer:updateFooter() local timeinfo = footer.textGeneratorMap.time() @@ -462,17 +454,16 @@ describe("Readerfooter module", function() footer:addToMainMenu(fake_menu) local has_toggle_menu = false - for _, item in ipairs(fake_menu.setting) do - if item.text == "Status bar" then - for _, subitem in ipairs(item.sub_item_table) do - if subitem.text == 'Toggle mode' then - has_toggle_menu = true - break - end + + if fake_menu.status_bar then + for _, subitem in ipairs(fake_menu.status_bar.sub_item_table) do + if subitem.text == 'Toggle mode' then + has_toggle_menu = true + break end - break end end + assert.is.truthy(has_toggle_menu) assert.is.same(1, footer.mode)