TouchMenu: open to items page when going up a level

Builds on #7490
pull/7834/head
yparitcher 3 years ago committed by Martín Fernández
parent 729388df81
commit 0577f57617

@ -542,6 +542,7 @@ function Dispatcher:addItem(caller, menu, location, settings, section)
end
end,
separator = settingsList[k].separator,
menu_item_id = k,
})
end
end

@ -420,6 +420,7 @@ local TouchMenu = FocusManager:new{
tab_item_table = nil, -- mandatory
-- for returning in multi-level menus
item_table_stack = nil,
parent_id = nil,
item_table = nil,
item_height = Size.item.height_large,
bordersize = Size.border.window,
@ -757,6 +758,7 @@ function TouchMenu:switchMenuTab(tab_num)
self.page = 1
-- clear item table stack
self.item_table_stack = {}
self.parent_id = nil
self.cur_tab = tab_num
self.item_table = self.tab_item_table[tab_num]
self:updateItems()
@ -766,6 +768,16 @@ function TouchMenu:backToUpperMenu()
if #self.item_table_stack ~= 0 then
self.item_table = table.remove(self.item_table_stack)
self.page = 1
if self.parent_id then
self:_recalculatePageLayout() -- we need an accurate self.perpage
for i = 1, #self.item_table do
if self.item_table[i].menu_item_id == self.parent_id then
self.page = math.floor( (i - 1) / self.perpage ) + 1
break
end
end
self.parent_id = nil
end
self:updateItems()
else
self:closeMenu()
@ -857,6 +869,7 @@ function TouchMenu:onMenuSelect(item)
end
else
table.insert(self.item_table_stack, self.item_table)
self.parent_id = item.menu_item_id
self.item_table = sub_item_table
self.page = 1
if self.item_table.open_on_menu_item_id_func then

Loading…
Cancel
Save