mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
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).
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user