From a753f332dee5b190124af6819737a22c93006dc6 Mon Sep 17 00:00:00 2001 From: poire-z Date: Thu, 4 Jun 2020 15:56:37 +0200 Subject: [PATCH] Footer: skip tap lock when needed (#6225) 7d139263 was preventing some features to work, so skip it in some cases: When toggling between top & bottom status bar (a tap is simulated to show the bottom bar). When in flipping mode (jumps to page at tap position). When toggling via menu (shown only when zero tap zone). --- frontend/apps/reader/modules/readerfooter.lua | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index 9ba8575e8..528f8815c 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -723,7 +723,7 @@ function ReaderFooter:addToMainMenu(menu_items) enabled_func = function() return not self.view.flipping_visible end, - callback = function() self:onTapFooter() end, + callback = function() self:onTapFooter(true) end, }) end @@ -1809,10 +1809,12 @@ function ReaderFooter:onExitFlippingMode() end function ReaderFooter:onTapFooter(ges) - if self.has_no_mode or self.settings.lock_tap then - return + local ignore_lock = false + if ges == true then + ignore_lock = true + ges = nil end - if self.view.flipping_visible then + if self.view.flipping_visible and ges then local pos = ges.pos local dimen = self.progress_bar.dimen -- if reader footer is not drawn before the dimen value should be nil @@ -1820,29 +1822,33 @@ function ReaderFooter:onTapFooter(ges) local percentage = (pos.x - dimen.x)/dimen.w self.ui:handleEvent(Event:new("GotoPercentage", percentage)) end - else - if self.settings.all_at_once or self.has_no_mode then - if self.mode >= 1 then - self.mode = self.mode_list.off - else - self.mode = self.mode_list.page_progress - end + self:updateFooter(true) + return true + end + if self.has_no_mode or (self.settings.lock_tap and not ignore_lock) 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 else - self.mode = (self.mode + 1) % self.mode_nb - for i, m in ipairs(self.mode_index) do - if self.mode == self.mode_list.off then break end - if self.mode == i then - if self.settings[m] then - break - else - self.mode = (self.mode + 1) % self.mode_nb - end + self.mode = self.mode_list.page_progress + end + else + self.mode = (self.mode + 1) % self.mode_nb + for i, m in ipairs(self.mode_index) do + if self.mode == self.mode_list.off then break end + if self.mode == i then + if self.settings[m] then + break + else + self.mode = (self.mode + 1) % self.mode_nb end end end - self:applyFooterMode() - G_reader_settings:saveSetting("reader_footer_mode", self.mode) end + self:applyFooterMode() + G_reader_settings:saveSetting("reader_footer_mode", self.mode) self:updateFooter(true) return true end @@ -1856,10 +1862,9 @@ end function ReaderFooter:setVisible(visible) if visible then -- If it was off, just do as if we tap'ed on it (so we don't - -- duplicate onTapFooter() code - not if flipping_visible as in - -- this case, a ges.pos argument to onTapFooter(ges) is required) - if self.mode == self.mode_list.off and not self.view.flipping_visible then - self:onTapFooter() + -- duplicate onTapFooter() code) + if self.mode == self.mode_list.off then + self:onTapFooter(true) -- ignore tap lock end self.view.footer_visible = (self.mode ~= self.mode_list.off) else