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).
pull/6232/head
poire-z 4 years ago committed by GitHub
parent 48060c3b86
commit a753f332de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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

Loading…
Cancel
Save