diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index fc759af92..e77ea3541 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -136,15 +136,20 @@ function ReaderPaging:onSaveSettings() end function ReaderPaging:addToMainMenu(tab_item_table) - if self.ui.document.info.has_pages then - table.insert(tab_item_table.typeset, { - text = _("Show page overlap"), - checked_func = function() return self.show_overlap_enable end, - callback = function() - self.show_overlap_enable = not self.show_overlap_enable + table.insert(tab_item_table.typeset, { + text = _("Show page overlap"), + enabled_func = function() + return not self.view.page_scroll and self.zoom_mode ~= "page" + and not self.zoom_mode:find("height") + end, + checked_func = function() return self.show_overlap_enable end, + callback = function() + self.show_overlap_enable = not self.show_overlap_enable + if not self.show_overlap_enable then + self.view:resetDimArea() end - }) - end + end + }) end --[[ diff --git a/frontend/apps/reader/modules/readerrolling.lua b/frontend/apps/reader/modules/readerrolling.lua index 185b5073b..4398a2d62 100644 --- a/frontend/apps/reader/modules/readerrolling.lua +++ b/frontend/apps/reader/modules/readerrolling.lua @@ -39,7 +39,7 @@ local ReaderRolling = InputContainer:new{ doc_height = nil, xpointer = nil, panning_steps = ReaderPanning.panning_steps, - show_overlap_enable = true, + show_overlap_enable = nil, overlap = 20, } @@ -94,6 +94,7 @@ function ReaderRolling:init() self.old_doc_height = self.doc_height self.old_page = self.ui.document.info.number_of_pages end) + self.ui.menu:registerToMainMenu(self) end -- This method will be called in onSetDimensions handler @@ -168,10 +169,6 @@ function ReaderRolling:initGesListener() end function ReaderRolling:onReadSettings(config) - local soe = config:readSetting("show_overlap_enable") - if not soe then - self.show_overlap_enable = soe - end local last_xp = config:readSetting("last_xpointer") local last_per = config:readSetting("last_percent") if last_xp then @@ -197,6 +194,10 @@ function ReaderRolling:onReadSettings(config) end self.xpointer = self.ui.document:getXPointer() end + self.show_overlap_enable = config:readSetting("show_overlap_enable") + if self.show_overlap_enable == nil then + self.show_overlap_enable = DSHOWOVERLAP + end end function ReaderRolling:onSaveSettings() @@ -204,6 +205,21 @@ function ReaderRolling:onSaveSettings() self.ui.doc_settings:saveSetting("last_percent", nil) self.ui.doc_settings:saveSetting("last_xpointer", self.xpointer) self.ui.doc_settings:saveSetting("percent_finished", self:getLastPercent()) + self.ui.doc_settings:saveSetting("show_overlap_enable", self.show_overlap_enable) +end + +function ReaderRolling:addToMainMenu(tab_item_table) + table.insert(tab_item_table.typeset, { + text = _("Show page overlap"), + enabled_func = function() return self.view.view_mode ~= "page" end, + checked_func = function() return self.show_overlap_enable end, + callback = function() + self.show_overlap_enable = not self.show_overlap_enable + if not self.show_overlap_enable then + self.view:resetDimArea() + end + end + }) end function ReaderRolling:getLastPercent() diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index bf1bc3632..e9e693c75 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -54,7 +54,7 @@ local ReaderView = OverlapGroup:new{ -- dimen for current viewing page page_area = Geom:new{}, -- dimen for area to dim - dim_area = Geom:new{w = 0, h = 0}, + dim_area = nil, -- has footer footer_visible = nil, -- has dogear @@ -69,9 +69,15 @@ local ReaderView = OverlapGroup:new{ function ReaderView:init() -- fix recalculate from close document pageno self.state.page = nil + -- fix inherited dim_area for following opened documents + self:resetDimArea() self:resetLayout() end +function ReaderView:resetDimArea() + self.dim_area = Geom:new{w = 0, h = 0} +end + function ReaderView:resetLayout() self.dogear = ReaderDogear:new{ view = self,