diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index 0a263b453..b2e110aac 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -24,6 +24,7 @@ local ReaderFooter = InputContainer:new{ progress_text = nil, text_font_face = "ffont", text_font_size = 14, + bar_height = Screen:scaleByDPI(7), height = Screen:scaleByDPI(19), padding = Screen:scaleByDPI(10), } @@ -59,7 +60,7 @@ function ReaderFooter:init() local text_width = self.progress_text:getSize().w self.progress_bar = ProgressWidget:new{ width = math.floor(Screen:getWidth() - text_width - self.padding), - height = Screen:scaleByDPI(7), + height = self.bar_height, percentage = self.progress_percentage, } local horizontal_group = HorizontalGroup:new{} @@ -143,17 +144,17 @@ function ReaderFooter:updateFooterPage() end self.progress_text.text = string.sub(self.progress_text.text,4) else - if self.mode == 1 then + if self.mode == 1 then self.progress_text.text = string.format("%d / %d", self.pageno, self.pages) - elseif self.mode == 2 then + elseif self.mode == 2 then self.progress_text.text = os.date("%H:%M") - elseif self.mode == 3 then + elseif self.mode == 3 then self.progress_text.text = "=> " .. self.ui.toc:_getChapterPagesLeft(self.pageno,self.pages) - elseif self.mode == 4 then + elseif self.mode == 4 then powerd = Device:getPowerDevice() state = powerd:isCharging() and -1 or powerd:getCapacity() self.progress_text.text = "B:" .. powerd:getCapacity() .. "%" - end + end end end diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index e9734ef18..291c25028 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -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)