bugfix: fix loop scrolling at the beginning/end of the document

pull/2/merge
chrox 11 years ago
parent b272d81768
commit d3c9b6866a

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

Loading…
Cancel
Save