From ed5a9294a453c41648580350b04f2b2116645664 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Mon, 5 Jul 2021 04:56:14 +0200 Subject: [PATCH] ScreenSaver: Saner close behavior (#7929) Should fix #7643 --- frontend/apps/reader/modules/readercoptlistener.lua | 13 ++++++++----- frontend/ui/screensaver.lua | 4 ++-- frontend/ui/widget/screensaverwidget.lua | 11 ++++++----- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/frontend/apps/reader/modules/readercoptlistener.lua b/frontend/apps/reader/modules/readercoptlistener.lua index 817892dbc..b3a70338d 100644 --- a/frontend/apps/reader/modules/readercoptlistener.lua +++ b/frontend/apps/reader/modules/readercoptlistener.lua @@ -52,11 +52,14 @@ function ReaderCoptListener:onReadSettings(config) -- Have this ready in case auto-refresh is enabled, now or later self.headerRefresh = function() - -- Only draw it if something has changed - local new_battery_level = Device:getPowerDevice():getCapacity() - if self.clock == 1 or (self.battery == 1 and new_battery_level ~= self.old_battery_level) then - self.old_battery_level = new_battery_level - self:updateHeader() + -- Only draw it if the header is shown... + if self.document.configurable.status_line == 0 and self.view.view_mode == "page" then + -- ...and something has changed + local new_battery_level = Device:getPowerDevice():getCapacity() + if self.clock == 1 or (self.battery == 1 and new_battery_level ~= self.old_battery_level) then + self.old_battery_level = new_battery_level + self:updateHeader() + end end self:rescheduleHeaderRefreshIfNeeded() -- schedule (or not) next refresh end diff --git a/frontend/ui/screensaver.lua b/frontend/ui/screensaver.lua index 89ea102a8..11b634d85 100644 --- a/frontend/ui/screensaver.lua +++ b/frontend/ui/screensaver.lua @@ -692,14 +692,14 @@ function Screensaver:close() UIManager:scheduleIn(screensaver_delay_number, function() logger.dbg("close screensaver") if self.screensaver_widget then - UIManager:close(self.screensaver_widget, "full") + UIManager:close(self.screensaver_widget) self.screensaver_widget = nil end end) elseif screensaver_delay == "disable" then logger.dbg("close screensaver") if self.screensaver_widget then - UIManager:close(self.screensaver_widget, "full") + UIManager:close(self.screensaver_widget) self.screensaver_widget = nil end else diff --git a/frontend/ui/widget/screensaverwidget.lua b/frontend/ui/widget/screensaverwidget.lua index 2d004241a..a81e8a928 100644 --- a/frontend/ui/widget/screensaverwidget.lua +++ b/frontend/ui/widget/screensaverwidget.lua @@ -53,8 +53,7 @@ function ScreenSaverWidget:update() self.dithered = true self[1] = self.main_frame UIManager:setDirty(self, function() - local update_region = self.main_frame.dimen - return "full", update_region + return "full", self.main_frame.dimen end) end @@ -73,9 +72,7 @@ function ScreenSaverWidget:onTap(_, ges) end function ScreenSaverWidget:onClose() - UIManager:close(self, "full") - -- Will come after the Resume event (how much later depends on screensaver_delay). - UIManager:broadcastEvent(Event:new("OutOfScreenSaver")) + UIManager:close(self) return true end @@ -88,6 +85,10 @@ function ScreenSaverWidget:onCloseWidget() UIManager:setDirty(nil, function() return "full", self.main_frame.dimen end) + + -- Will come after the Resume event, iff screensaver_delay is set. + -- Comes *before* it otherwise. + UIManager:broadcastEvent(Event:new("OutOfScreenSaver")) end return ScreenSaverWidget