diff --git a/frontend/apps/reader/modules/readerfont.lua b/frontend/apps/reader/modules/readerfont.lua index 66cf45504..0e4dc2548 100644 --- a/frontend/apps/reader/modules/readerfont.lua +++ b/frontend/apps/reader/modules/readerfont.lua @@ -96,9 +96,13 @@ function ReaderFont:init() end, checked_func = function() return v == self.font_face - end + end, + menu_item_id = v, }) end + self.face_table.open_on_menu_item_id_func = function() + return self.font_face + end self.ui.menu:registerToMainMenu(self) end @@ -332,7 +336,9 @@ function ReaderFont:addToMainMenu(menu_items) self.face_table.max_per_page = 5 -- insert table to main reader menu menu_items.change_font = { - text = self.font_menu_title, + text_func = function() + return T(_("Font: %1"), BD.wrap(self.font_face)) + end, sub_item_table = self.face_table, } end diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index b53938ed2..541d67ff5 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -499,12 +499,14 @@ function TouchMenu:init() self.page_info_left_chev = Button:new{ icon = chevron_left, callback = function() self:onPrevPage() end, + hold_callback = function() self:onFirstPage() end, bordersize = 0, show_parent = self.show_parent, } self.page_info_right_chev = Button:new{ icon = chevron_right, callback = function() self:onNextPage() end, + hold_callback = function() self:onLastPage() end, bordersize = 0, show_parent = self.show_parent, } @@ -787,6 +789,18 @@ function TouchMenu:onPrevPage() return true end +function TouchMenu:onFirstPage() + self.page = 1 + self:updateItems() + return true +end + +function TouchMenu:onLastPage() + self.page = self.page_num + self:updateItems() + return true +end + function TouchMenu:onSwipe(arg, ges_ev) local direction = BD.flipDirectionIfMirroredUILayout(ges_ev.direction) if direction == "west" then @@ -838,6 +852,16 @@ function TouchMenu:onMenuSelect(item) table.insert(self.item_table_stack, self.item_table) self.item_table = sub_item_table self.page = 1 + if self.item_table.open_on_menu_item_id_func then + self:_recalculatePageLayout() -- we need an accurate self.perpage + local open_id = self.item_table.open_on_menu_item_id_func() + for i = 1, #self.item_table do + if self.item_table[i].menu_item_id == open_id then + self.page = math.floor( (i - 1) / self.perpage ) + 1 + break + end + end + end self:updateItems() end end