diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index 2ace6e595..646fd8ef8 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -259,11 +259,14 @@ function ReaderUI:init() self:registerPostInitCallback(function() self.document:loadDocument() - -- read additional settings after the document has been loaded - -- (but not rendered yet) + -- used to read additional settings after the document has been + -- loaded (but not rendered yet) self:handleEvent(Event:new("PreRenderDocument", self.doc_settings)) self.document:render() + + -- CREngine only reports correct page count after rendering is done + self:handleEvent(Event:new("PostRenderDocument", self.doc_settings)) end) -- typeset controller self:registerModule("typeset", ReaderTypeset:new{ diff --git a/plugins/statistics.koplugin/main.lua b/plugins/statistics.koplugin/main.lua index 87b723f34..8be4dbb52 100755 --- a/plugins/statistics.koplugin/main.lua +++ b/plugins/statistics.koplugin/main.lua @@ -58,9 +58,7 @@ function ReaderStatistics:initData(config) if self.is_enabled then local book_properties = self:getBookProperties() self:savePropertiesInToData(book_properties) - if config.data.stats then - self.data = config.data.stats - else + if not self.data then --first time merge data self:inplaceMigration(); end @@ -490,9 +488,12 @@ function ReaderStatistics:saveSettings(fields) end function ReaderStatistics:onReadSettings(config) - -- delay initialization for accurate total pages count of the doc - UIManager:scheduleIn(0.1, function() self:initData(config) end) + self.data = config.data.stats end -return ReaderStatistics +function ReaderStatistics:onPostRenderDocument() + -- we have correct page count now, do the actual initialization work + self:initData() +end +return ReaderStatistics