Reader: Allow scrolling small offsets in continuous mode.

Using the drag gestures is cumbersome and finicky, especially when
you want to do it all the time. Thus, we add a new option here to
modify the default tapping behavior.
reviewable/pr11148/r1
Rohitt Vashishtha 5 months ago
parent bf03f40ef2
commit d01a81dc75

@ -145,7 +145,7 @@ function ReaderPaging:setupTouchZones()
screen_zone = forward_zone,
handler = function()
if G_reader_settings:nilOrFalse("page_turns_disable_tap") then
return self:onGotoViewRel(1)
return self:onPageTurnRel(1)
end
end,
},
@ -155,7 +155,7 @@ function ReaderPaging:setupTouchZones()
screen_zone = backward_zone,
handler = function()
if G_reader_settings:nilOrFalse("page_turns_disable_tap") then
return self:onGotoViewRel(-1)
return self:onPageTurnRel(-1)
end
end,
},
@ -191,6 +191,14 @@ function ReaderPaging:onReadSettings(config)
self:_gotoPage(config:readSetting("last_page") or 1)
self.flipping_zoom_mode = config:readSetting("flipping_zoom_mode") or "page"
self.flipping_scroll_mode = config:isTrue("flipping_scroll_mode")
self.page_scroll_amount = config:readSetting("kopt_page_scroll_amount")
or G_reader_settings:readSetting("kopt_page_scroll_amount")
or 0
end
function ReaderPaging:onPageScrollAmountUpdate(page_scroll_amount)
self.page_scroll_amount = page_scroll_amount
return true
end
function ReaderPaging:onSaveSettings()
@ -579,6 +587,14 @@ function ReaderPaging:onGotoViewRel(diff)
return true
end
function ReaderPaging:onPageTurnRel(diff)
-- handle smooth scroll by default.
if self.view.page_scroll and self.page_scroll_amount ~= 0 then
return self:onGotoPosRel(self.page_scroll_amount * diff)
end
return self:onGotoViewRel(diff)
end
function ReaderPaging:onGotoPosRel(diff)
if self.view.page_scroll then
self:onPanningRel(100*diff)

@ -239,6 +239,7 @@ local settingsList = {
kopt_zoom_direction = {category="string", paging=true},
kopt_page_scroll = {category="string", paging=true},
kopt_page_gap_height = {category="string", paging=true},
kopt_page_scroll_amount = {category="string", paging=true},
kopt_full_screen = {category="string", paging=true},
kopt_line_spacing = {category="configurable", paging=true},
kopt_justification = {category="configurable", paging=true},
@ -451,6 +452,7 @@ local dispatcher_menu_order = {
"kopt_zoom_direction",
"kopt_page_scroll",
"kopt_page_gap_height",
"kopt_page_scroll_amount",
"kopt_full_screen",
"kopt_line_spacing",
"kopt_justification",

@ -352,6 +352,20 @@ left to right or reverse, top to bottom or reverse.]]),
name_text_hold_callback = optionsutil.showValues,
help_text = _([[In continuous view mode, sets the thickness of the separator between document pages.]]),
},
{
name = "page_scroll_amount",
name_text = _("Page Scroll Amount"),
toggle = { C_("Scroll", "legacy"), C_("Scroll", "small"), C_("Scroll", "medium"), C_("Scroll", "large") },
values = { 0, 1, 2, 3 },
default_value = 0,
args = { 0, 1, 2, 3 },
event = "PageScrollAmountUpdate",
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "page_scroll", 1)
end,
name_text_hold_callback = optionsutil.showValues,
help_text = _([[In continuous view mode, sets the amount of scroll tapping would lead to.]]),
},
{
name = "full_screen",
name_text = _("Progress Bar"),

Loading…
Cancel
Save