From a47f3a27653aa3ed8ba48f1a14e027209c658960 Mon Sep 17 00:00:00 2001 From: poire-z Date: Tue, 26 Mar 2019 20:52:31 +0100 Subject: [PATCH] ReaderRolling: proper refresh when toggling scroll/page mode When toggling between scroll and page modes multiple times, _gotoXPointer() could find the xpointer to be already positionned and avoid calling setDirty() (so not enqueuing a whole screen refresh). But the page will be slightly moved to account for the top margin disappearing. We need that whole screen refresh in such cases, so ensure one is enqueued. --- frontend/apps/reader/modules/readerrolling.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/apps/reader/modules/readerrolling.lua b/frontend/apps/reader/modules/readerrolling.lua index 4392fac84..c3c6415e7 100644 --- a/frontend/apps/reader/modules/readerrolling.lua +++ b/frontend/apps/reader/modules/readerrolling.lua @@ -688,6 +688,8 @@ function ReaderRolling:onChangeViewMode() self.ui:handleEvent(Event:new("UpdateToc")) if self.xpointer then self:_gotoXPointer(self.xpointer) + -- Ensure a whole screen refresh is always enqueued + UIManager:setDirty(self.view.dialog, "partial") else table.insert(self.ui.postInitCallback, function() self:_gotoXPointer(self.xpointer)