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