[sdl] Add support arrow key for next/prev page (#5149)

Close: #4997 
This PR add support arrow key and mouse scroll wheel for next/previous page.

- Document in page mode:

PageDown, Arrow down, Arrow right - go to next page
PageUp, Arrow up, arrow left - go to prev page
Mouse scroll wheel down - go to next page
Mouse scroll wheel up - go to prev page

- Document in scroll mode:

PageDown, Arrow right - go to next page
PageUp, Arrow, arrow left - go to prev page
Arrow down - scroll document down
Arrow up - scroll document up
Mouse scroll wheel down - scroll document down
Mouse scroll wheel up - scroll document up
This commit is contained in:
Robert
2019-07-28 13:57:03 +02:00
committed by Frans de Jonge
parent 14bdf4782a
commit 803a143764
3 changed files with 38 additions and 9 deletions

View File

@@ -43,13 +43,22 @@ function ReaderPaging:init()
self.key_events = {}
if Device:hasKeys() then
self.key_events.GotoNextPage = {
{Input.group.PgFwd}, doc = "go to next page",
{ {"RPgFwd", "LPgFwd", "Right" } }, doc = "go to next page",
event = "GotoViewRel", args = 1,
}
self.key_events.GotoPrevPage = {
{Input.group.PgBack}, doc = "go to previous page",
{ { "RPgBack", "LPgBack", "Left" } }, doc = "go to previous page",
event = "GotoViewRel", args = -1,
}
self.key_events.GotoNextPos = {
{ {"Down" } }, doc = "go to next position",
event = "GotoPosRel", args = 1,
}
self.key_events.GotoPrevPos = {
{ { "Up" } }, doc = "go to previous position",
event = "GotoPosRel", args = -1,
}
end
if Device:hasKeyboard() then
self.key_events.GotoFirst = {
@@ -396,8 +405,13 @@ function ReaderPaging:onPan(_, ges)
if self.ui.gesture and self.ui.gesture.multiswipes_enabled then
relative_type = "relative_delayed"
end
self:onPanningRel(self.last_pan_relative_y - ges[relative_type].y)
self.last_pan_relative_y = ges[relative_type].y
-- this is only used when mouse wheel is used
if ges.mousewheel_direction and not self.view.page_scroll then
self:onGotoViewRel(-1 * ges.mousewheel_direction)
else
self:onPanningRel(self.last_pan_relative_y - ges[relative_type].y)
self.last_pan_relative_y = ges[relative_type].y
end
end
return true
end
@@ -455,6 +469,16 @@ function ReaderPaging:onGotoViewRel(diff)
return true
end
function ReaderPaging:onGotoPosRel(diff)
if self.view.page_scroll then
self:onPanningRel(100*diff)
else
self:onGotoPageRel(diff)
end
self:setPagePosition(self:getTopPage(), self:getTopPosition())
return true
end
function ReaderPaging:onPanningRel(diff)
if self.view.page_scroll then
self:onScrollPanRel(diff)