mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
[fix] MenuSorter: take care of orphaned submenus
See https://github.com/koreader/koreader/pull/3167#issuecomment-326805768
This commit is contained in:
committed by
Qingping Hou
parent
d4fd0b9428
commit
829e2fffd8
@@ -157,6 +157,13 @@ function MenuSorter:sort(item_table, order)
|
||||
v.text = self.orphaned_prefix .. v.text
|
||||
-- prevent text being prepended to item on menu reload, i.e., on switching between reader and filemanager
|
||||
v.new = true
|
||||
-- deal with orphaned submenus
|
||||
if #v > 0 then
|
||||
v.sub_item_table = {}
|
||||
for i=1,#v do
|
||||
v.sub_item_table[i] = v[i]
|
||||
end
|
||||
end
|
||||
end
|
||||
table.insert(menu_table["KOMenu:menu_buttons"][1], v)
|
||||
end
|
||||
|
||||
@@ -80,6 +80,36 @@ describe("MenuSorter module", function()
|
||||
assert.is_true(string.sub(menu_item.text,1,string.len(MenuSorter.orphaned_prefix))==MenuSorter.orphaned_prefix)
|
||||
end
|
||||
end)
|
||||
it("should display submenu of orphaned submenu", function()
|
||||
local menu_items = {
|
||||
["KOMenu:menu_buttons"] = {},
|
||||
main = {text="Main"},
|
||||
search = {text="Search"},
|
||||
tools = {text="Tools"},
|
||||
setting = {text="Settings"},
|
||||
submenu = {text="Submenu"},
|
||||
submenu_item1 = {text="Submenu item 1"},
|
||||
submenu_item2 = {text="Submenu item 2"},
|
||||
}
|
||||
local order = {
|
||||
["KOMenu:menu_buttons"] = {
|
||||
"setting",
|
||||
},
|
||||
setting = {},
|
||||
submenu = {
|
||||
"submenu_item2",
|
||||
"submenu_item1",
|
||||
},
|
||||
}
|
||||
|
||||
local test_menu = MenuSorter:sort(menu_items, order)
|
||||
|
||||
-- all four should be in the first menu
|
||||
assert.is_true(#test_menu[1] == 4)
|
||||
assert.is_truthy(test_menu[1][3].sub_item_table)
|
||||
assert.equals(test_menu[1][3].sub_item_table[1].id, "submenu_item2")
|
||||
assert.equals(test_menu[1][3].sub_item_table[2].id, "submenu_item1")
|
||||
end)
|
||||
it("should not treat disabled as orphans", function()
|
||||
local menu_items = {
|
||||
["KOMenu:menu_buttons"] = {},
|
||||
|
||||
Reference in New Issue
Block a user