From 64b0f5e7cf21fcb6fb3bec471a304120f28f5ca2 Mon Sep 17 00:00:00 2001 From: yparitcher Date: Wed, 26 Apr 2023 20:18:32 -0400 Subject: [PATCH] ReaderFooter: separate ToggleFooterMode from TapFooter the footer can be toggled by gestures and menu, and should only be locked or skim in flipping mode when the footer is tapped also allow toggling when only displaying the progress bar rename to TapFooter to show it is not an event Fixes: #10355 --- frontend/apps/reader/modules/readerfooter.lua | 20 +++++++--------- frontend/dispatcher.lua | 2 +- spec/unit/readerfooter_spec.lua | 24 +++++++++---------- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index fc36af187..a025b8202 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -845,7 +845,7 @@ function ReaderFooter:setupTouchZones() id = "readerfooter_tap", ges = "tap", screen_zone = footer_screen_zone, - handler = function(ges) return self:onTapFooter(ges) end, + handler = function(ges) return self:TapFooter(ges) end, overrides = { "readerconfigmenu_ext_tap", "readerconfigmenu_tap", @@ -1018,7 +1018,7 @@ function ReaderFooter:addToMainMenu(menu_items) enabled_func = function() return not self.view.flipping_visible end, - callback = function() self:onTapFooter(true) end, + callback = function() self:onToggleFooterMode() end, }) settings_submenu_num = 2 end @@ -2366,12 +2366,7 @@ function ReaderFooter:onExitFlippingMode() self:rescheduleFooterAutoRefreshIfNeeded() end -function ReaderFooter:onTapFooter(ges) - local ignore_lock = false - if ges == true then - ignore_lock = true - ges = nil - end +function ReaderFooter:TapFooter(ges) if self.view.flipping_visible and ges then local pos = ges.pos local dimen = self.progress_bar.dimen @@ -2383,9 +2378,12 @@ function ReaderFooter:onTapFooter(ges) self:onUpdateFooter(true) return true end - if self.has_no_mode or (self.settings.lock_tap and not ignore_lock) then - return - end + if self.settings.lock_tap then return end + return self:onToggleFooterMode() +end + +function ReaderFooter:onToggleFooterMode() + if self.has_no_mode and self.settings.disable_progress_bar then return end if self.settings.all_at_once or self.has_no_mode then if self.mode >= 1 then self.mode = self.mode_list.off diff --git a/frontend/dispatcher.lua b/frontend/dispatcher.lua index a99bdddb6..e8e4b46ca 100644 --- a/frontend/dispatcher.lua +++ b/frontend/dispatcher.lua @@ -112,7 +112,7 @@ local settingsList = { -- reader settings open_next_document_in_folder = {category="none", event="OpenNextDocumentInFolder", title=_("Open next document in folder"), reader=true, separator=true}, - toggle_status_bar = {category="none", event="TapFooter", title=_("Toggle status bar"), reader=true, separator=true}, + toggle_status_bar = {category="none", event="ToggleFooterMode", title=_("Toggle status bar"), reader=true, separator=true}, prev_chapter = {category="none", event="GotoPrevChapter", title=_("Previous chapter"), reader=true}, next_chapter = {category="none", event="GotoNextChapter", title=_("Next chapter"), reader=true}, first_page = {category="none", event="GoToBeginning", title=_("First page"), reader=true}, diff --git a/spec/unit/readerfooter_spec.lua b/spec/unit/readerfooter_spec.lua index ff635c625..127f8eb6e 100644 --- a/spec/unit/readerfooter_spec.lua +++ b/spec/unit/readerfooter_spec.lua @@ -301,35 +301,35 @@ describe("Readerfooter module", function() } local footer = readerui.view.footer footer.mode = 0 - footer:onTapFooter() + footer:TapFooter() assert.is.same(1, footer.mode) - footer:onTapFooter() + footer:TapFooter() -- 2 is pages_left_book, an alternate variant of page_progress, disabled by default (#7047) assert.is.same(3, footer.mode) - footer:onTapFooter() + footer:TapFooter() assert.is.same(4, footer.mode) - footer:onTapFooter() + footer:TapFooter() assert.is.same(5, footer.mode) - footer:onTapFooter() + footer:TapFooter() assert.is.same(6, footer.mode) - footer:onTapFooter() + footer:TapFooter() assert.is.same(7, footer.mode) - footer:onTapFooter() + footer:TapFooter() assert.is.same(8, footer.mode) - footer:onTapFooter() + footer:TapFooter() assert.is.same(0, footer.mode) footer.settings.all_at_once = true footer:updateFooterTextGenerator() footer.mode = 5 - footer:onTapFooter() + footer:TapFooter() assert.is.same(0, footer.mode) - footer:onTapFooter() + footer:TapFooter() assert.is.same(1, footer.mode) - footer:onTapFooter() + footer:TapFooter() assert.is.same(0, footer.mode) -- Make it visible again to make the following tests behave... - footer:onTapFooter() + footer:TapFooter() assert.is.same(1, footer.mode) readerui:closeDocument() readerui:onClose()