diff --git a/frontend/apps/reader/modules/readerrolling.lua b/frontend/apps/reader/modules/readerrolling.lua index 2157c3de1..5d6d86f1d 100644 --- a/frontend/apps/reader/modules/readerrolling.lua +++ b/frontend/apps/reader/modules/readerrolling.lua @@ -140,11 +140,22 @@ function ReaderRolling:onReadSettings(config) self.inverse_reading_order = config:readSetting("inverse_reading_order") or false end +-- in scroll mode percent_finished must be save before close document +-- we cannot do it in onSaveSettings() because getLastPercent() uses self.ui.document +function ReaderRolling:onCloseDocument() + self.ui.doc_settings:saveSetting("percent_finished", self:getLastPercent()) +end + function ReaderRolling:onSaveSettings() -- remove last_percent config since its deprecated 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()) + -- in scrolling mode, the document may already be closed, + -- so we have to check the condition to avoid crash function self:getLastPercent() + -- that uses self.ui.document + if self.ui.document then + self.ui.doc_settings:saveSetting("percent_finished", self:getLastPercent()) + end self.ui.doc_settings:saveSetting("show_overlap_enable", self.show_overlap_enable) self.ui.doc_settings:saveSetting("inverse_reading_order", self.inverse_reading_order) end