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
reviewable/pr10382/r1
yparitcher 1 year ago
parent a5320acf4f
commit 64b0f5e7cf

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

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

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

Loading…
Cancel
Save