ReaderPaging: enable Kindle page-turn animations (#11424)

Fixes #11423.
reviewable/pr11597/r1
dkabot 2 months ago committed by GitHub
parent ca8e9352ba
commit ee7c3ab551
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -565,7 +565,7 @@ function ReaderPaging:onGotoPercent(percent)
if dest > self.number_of_pages then if dest > self.number_of_pages then
dest = self.number_of_pages dest = self.number_of_pages
end end
self:_gotoPage(dest) self:onGotoPage(dest)
return true return true
end end
@ -575,6 +575,7 @@ function ReaderPaging:onGotoViewRel(diff)
else else
self:onGotoPageRel(diff) self:onGotoPageRel(diff)
end end
self.ui:handleEvent(Event:new("PageChangeAnimation", diff > 0))
self:setPagePosition(self:getTopPage(), self:getTopPosition()) self:setPagePosition(self:getTopPage(), self:getTopPosition())
return true return true
end end
@ -1127,8 +1128,11 @@ function ReaderPaging:_gotoPage(number, orig_mode)
end end
function ReaderPaging:onGotoPage(number, pos) function ReaderPaging:onGotoPage(number, pos)
local same_page = number == self.current_page;
local animation_direction = number > self.current_page;
self:setPagePosition(number, 0) self:setPagePosition(number, 0)
self:_gotoPage(number) self:_gotoPage(number)
self.ui:handleEvent(Event:new("PageChangeAnimation", animation_direction))
if pos then if pos then
local rect_p = Geom:new{ x = pos.x or 0, y = pos.y or 0 } local rect_p = Geom:new{ x = pos.x or 0, y = pos.y or 0 }
local rect_s = Geom:new(rect_p):copy() local rect_s = Geom:new(rect_p):copy()
@ -1138,7 +1142,7 @@ function ReaderPaging:onGotoPage(number, pos)
else else
self.view:PanningUpdate(rect_s.x - self.view.visible_area.x, rect_s.y - self.view.visible_area.y) self.view:PanningUpdate(rect_s.x - self.view.visible_area.x, rect_s.y - self.view.visible_area.y)
end end
elseif number == self.current_page then elseif same_page then
-- gotoPage emits this event only if the page changes -- gotoPage emits this event only if the page changes
self.ui:handleEvent(Event:new("PageUpdate", self.current_page)) self.ui:handleEvent(Event:new("PageUpdate", self.current_page))
end end
@ -1157,14 +1161,14 @@ function ReaderPaging:onGotoRelativePage(number)
end end
new_page = test_page new_page = test_page
end end
self:_gotoPage(new_page) self:onGotoPage(new_page)
return true return true
end end
function ReaderPaging:onGotoPercentage(percentage) function ReaderPaging:onGotoPercentage(percentage)
if percentage < 0 then percentage = 0 end if percentage < 0 then percentage = 0 end
if percentage > 1 then percentage = 1 end if percentage > 1 then percentage = 1 end
self:_gotoPage(math.floor(percentage*self.number_of_pages)) self:onGotoPage(math.floor(percentage*self.number_of_pages))
return true return true
end end

Loading…
Cancel
Save