diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index 8ad6217a1..70afd3127 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -714,7 +714,7 @@ function ReaderPaging:onUpdateScrollPageGamma(gamma) return true end -function ReaderPaging:getNextPageState(blank_area, offset) +function ReaderPaging:getNextPageState(blank_area, image_offset) local page_area = self.view:getPageArea( self.view.state.page, self.view.state.zoom, @@ -722,21 +722,25 @@ function ReaderPaging:getNextPageState(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 = page_area.x, page_area.y - visible_area = visible_area:shrinkInside(page_area, offset.x, offset.y) + visible_area = visible_area:shrinkInside(page_area, image_offset.x, image_offset.y) -- shrink blank area by the height of visible area blank_area.h = blank_area.h - visible_area.h + local page_offset = Geom:new{x = self.view.state.offset.x, y = 0} + if blank_area.w > page_area.w then + page_offset:offsetBy((blank_area.w - page_area.w) / 2, 0) + end return { page = self.view.state.page, zoom = self.view.state.zoom, rotation = self.view.state.rotation, gamma = self.view.state.gamma, - offset = Geom:new{ x = self.view.state.offset.x, y = 0}, + offset = page_offset, visible_area = visible_area, page_area = page_area, } end -function ReaderPaging:getPrevPageState(blank_area, offset) +function ReaderPaging:getPrevPageState(blank_area, image_offset) local page_area = self.view:getPageArea( self.view.state.page, self.view.state.zoom, @@ -745,15 +749,19 @@ function ReaderPaging:getPrevPageState(blank_area, offset) visible_area.w, visible_area.h = blank_area.w, blank_area.h visible_area.x = page_area.x visible_area.y = page_area.y + page_area.h - visible_area.h - visible_area = visible_area:shrinkInside(page_area, offset.x, offset.y) + visible_area = visible_area:shrinkInside(page_area, image_offset.x, image_offset.y) -- shrink blank area by the height of visible area blank_area.h = blank_area.h - visible_area.h + local page_offset = Geom:new{x = self.view.state.offset.x, y = 0} + if blank_area.w > page_area.w then + page_offset:offsetBy((blank_area.w - page_area.w) / 2, 0) + end return { page = self.view.state.page, zoom = self.view.state.zoom, rotation = self.view.state.rotation, gamma = self.view.state.gamma, - offset = Geom:new{ x = self.view.state.offset.x, y = 0}, + offset = page_offset, visible_area = visible_area, page_area = page_area, } diff --git a/spec/unit/readerlink_spec.lua b/spec/unit/readerlink_spec.lua index 7ee42ab80..f181c9d13 100644 --- a/spec/unit/readerlink_spec.lua +++ b/spec/unit/readerlink_spec.lua @@ -124,7 +124,7 @@ describe("ReaderLink module", function() local expected_page_states = { { gamma = 1, - offset = {x = 0, y = 0}, + offset = {x = 17, y = 0}, page = 3, page_area = { x = 0, y = 0, @@ -139,7 +139,7 @@ describe("ReaderLink module", function() }, { gamma = 1, - offset = {x = 0, y = 0}, + offset = {x = 17, y = 0}, page = 4, page_area = { h = 800, w = 566, diff --git a/spec/unit/readerview_spec.lua b/spec/unit/readerview_spec.lua index 5e387c956..682131400 100644 --- a/spec/unit/readerview_spec.lua +++ b/spec/unit/readerview_spec.lua @@ -124,7 +124,7 @@ describe("Readerview module", function() local saved_ctx = { { gamma = 1, - offset = {x = 0, y = 0}, + offset = {x = 17, y = 0}, page = 1, page_area = { h = 800,