add minibar height into overlap height

This commit is contained in:
chrox
2014-07-17 21:27:35 +08:00
parent d5860fa9fb
commit ce266bffb8
2 changed files with 24 additions and 16 deletions

View File

@@ -603,15 +603,21 @@ function ReaderPaging:onScrollPanRel(diff)
UIManager:setDirty(self.view.dialog, "fast")
end
function ReaderPaging:calculateOverlap()
local footer_height = (self.view.footer_visible and 1 or 0) * self.view.footer.bar_height
return self.overlap + footer_height
end
function ReaderPaging:onScrollPageRel(diff)
DEBUG("scroll relative page:", diff)
local blank_area = Geom:new{}
blank_area:setSizeTo(self.view.dimen)
local overlap = self:calculateOverlap()
if diff > 0 then
local last_page_state = table.remove(self.view.page_states)
local offset = Geom:new{
x = 0,
y = last_page_state.visible_area.h - self.overlap
y = last_page_state.visible_area.h - overlap
}
self.view.page_states = self:genPageStatesFromTop(last_page_state, blank_area, offset)
end
@@ -619,7 +625,7 @@ function ReaderPaging:onScrollPageRel(diff)
local first_page_state = table.remove(self.view.page_states, 1)
local offset = Geom:new{
x = 0,
y = -first_page_state.visible_area.h + self.overlap
y = -first_page_state.visible_area.h + overlap
}
self.view.page_states = self:genPageStatesFromBottom(first_page_state, blank_area, offset)
end
@@ -672,16 +678,17 @@ function ReaderPaging:onGotoPageRel(diff)
else
-- not end of page yet, goto next view
-- adjust panning step according to overlap
if x_pan_off > self.overlap then
local overlap = self:calculateOverlap()
if x_pan_off > overlap then
-- moving to next view, move view
x_pan_off = x_pan_off - self.overlap
elseif x_pan_off < -self.overlap then
x_pan_off = x_pan_off + self.overlap
x_pan_off = x_pan_off - overlap
elseif x_pan_off < -overlap then
x_pan_off = x_pan_off + overlap
end
if y_pan_off > self.overlap then
y_pan_off = y_pan_off - self.overlap
elseif y_pan_off < -self.overlap then
y_pan_off = y_pan_off + self.overlap
if y_pan_off > overlap then
y_pan_off = y_pan_off - overlap
elseif y_pan_off < -overlap then
y_pan_off = y_pan_off + overlap
end
-- we have to calculate again to count into overlap
new_va.x = Math.roundAwayFromZero(self.visible_area.x+x_pan_off)