mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
bugfix: fix loop scrolling at the beginning/end of the document
This commit is contained in:
@@ -322,7 +322,11 @@ function ReaderPaging:updateLastPageState(state, blank_area, offset)
|
||||
local visible_area = Geom:new{x = 0, y = 0}
|
||||
visible_area.w, visible_area.h = blank_area.w, blank_area.h
|
||||
visible_area.x, visible_area.y = state.visible_area.x, state.visible_area.y
|
||||
visible_area = visible_area:shrinkInside(state.page_area, offset.x, offset.y)
|
||||
if state.page == self.number_of_pages then
|
||||
visible_area:offsetWithin(state.page_area, offset.x, offset.y)
|
||||
else
|
||||
visible_area = visible_area:shrinkInside(state.page_area, offset.x, offset.y)
|
||||
end
|
||||
-- shrink blank area by the height of visible area
|
||||
blank_area.h = blank_area.h - visible_area.h
|
||||
state.visible_area = visible_area
|
||||
@@ -334,7 +338,11 @@ function ReaderPaging:updateFirstPageState(state, blank_area, offset)
|
||||
visible_area.w, visible_area.h = blank_area.w, blank_area.h
|
||||
visible_area.x = state.page_area.x
|
||||
visible_area.y = state.visible_area.y + state.visible_area.h - visible_area.h
|
||||
visible_area = visible_area:shrinkInside(state.page_area, offset.x, offset.y)
|
||||
if state.page == 1 then
|
||||
visible_area:offsetWithin(state.page_area, offset.x, offset.y)
|
||||
else
|
||||
visible_area = visible_area:shrinkInside(state.page_area, offset.x, offset.y)
|
||||
end
|
||||
-- shrink blank area by the height of visible area
|
||||
blank_area.h = blank_area.h - visible_area.h
|
||||
state.visible_area = visible_area
|
||||
@@ -361,8 +369,8 @@ function ReaderPaging:onScrollPageRel(diff)
|
||||
while blank_area.h > 0 do
|
||||
blank_area.h = blank_area.h - self.view.page_gap.height
|
||||
if blank_area.h > 0 then
|
||||
if self.view.state.page == self.number_of_pages then break end
|
||||
self:gotoPage(self.view.state.page + 1, "scrolling")
|
||||
if self.current_page == self.number_of_pages then break end
|
||||
self:gotoPage(self.current_page + 1, "scrolling")
|
||||
local state = self:getNextPageState(blank_area, Geom:new{})
|
||||
--DEBUG("new state", state)
|
||||
table.insert(self.view.page_states, state)
|
||||
@@ -385,8 +393,8 @@ function ReaderPaging:onScrollPageRel(diff)
|
||||
while blank_area.h > 0 do
|
||||
blank_area.h = blank_area.h - self.view.page_gap.height
|
||||
if blank_area.h > 0 then
|
||||
if self.view.state.page == 1 then break end
|
||||
self:gotoPage(self.view.state.page - 1, "scrolling")
|
||||
if self.current_page == 1 then break end
|
||||
self:gotoPage(self.current_page - 1, "scrolling")
|
||||
local state = self:getPrevPageState(blank_area, Geom:new{})
|
||||
--DEBUG("new state", state)
|
||||
table.insert(self.view.page_states, 1, state)
|
||||
|
||||
Reference in New Issue
Block a user