ScreenSaver: Saner close behavior (#7929)

Should fix #7643
pull/7934/head
NiLuJe 3 years ago committed by GitHub
parent b07414c2b5
commit ed5a9294a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -52,11 +52,14 @@ function ReaderCoptListener:onReadSettings(config)
-- Have this ready in case auto-refresh is enabled, now or later -- Have this ready in case auto-refresh is enabled, now or later
self.headerRefresh = function() self.headerRefresh = function()
-- Only draw it if something has changed -- Only draw it if the header is shown...
local new_battery_level = Device:getPowerDevice():getCapacity() if self.document.configurable.status_line == 0 and self.view.view_mode == "page" then
if self.clock == 1 or (self.battery == 1 and new_battery_level ~= self.old_battery_level) then -- ...and something has changed
self.old_battery_level = new_battery_level local new_battery_level = Device:getPowerDevice():getCapacity()
self:updateHeader() 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 end
self:rescheduleHeaderRefreshIfNeeded() -- schedule (or not) next refresh self:rescheduleHeaderRefreshIfNeeded() -- schedule (or not) next refresh
end end

@ -692,14 +692,14 @@ function Screensaver:close()
UIManager:scheduleIn(screensaver_delay_number, function() UIManager:scheduleIn(screensaver_delay_number, function()
logger.dbg("close screensaver") logger.dbg("close screensaver")
if self.screensaver_widget then if self.screensaver_widget then
UIManager:close(self.screensaver_widget, "full") UIManager:close(self.screensaver_widget)
self.screensaver_widget = nil self.screensaver_widget = nil
end end
end) end)
elseif screensaver_delay == "disable" then elseif screensaver_delay == "disable" then
logger.dbg("close screensaver") logger.dbg("close screensaver")
if self.screensaver_widget then if self.screensaver_widget then
UIManager:close(self.screensaver_widget, "full") UIManager:close(self.screensaver_widget)
self.screensaver_widget = nil self.screensaver_widget = nil
end end
else else

@ -53,8 +53,7 @@ function ScreenSaverWidget:update()
self.dithered = true self.dithered = true
self[1] = self.main_frame self[1] = self.main_frame
UIManager:setDirty(self, function() UIManager:setDirty(self, function()
local update_region = self.main_frame.dimen return "full", self.main_frame.dimen
return "full", update_region
end) end)
end end
@ -73,9 +72,7 @@ function ScreenSaverWidget:onTap(_, ges)
end end
function ScreenSaverWidget:onClose() function ScreenSaverWidget:onClose()
UIManager:close(self, "full") UIManager:close(self)
-- Will come after the Resume event (how much later depends on screensaver_delay).
UIManager:broadcastEvent(Event:new("OutOfScreenSaver"))
return true return true
end end
@ -88,6 +85,10 @@ function ScreenSaverWidget:onCloseWidget()
UIManager:setDirty(nil, function() UIManager:setDirty(nil, function()
return "full", self.main_frame.dimen return "full", self.main_frame.dimen
end) end)
-- Will come after the Resume event, iff screensaver_delay is set.
-- Comes *before* it otherwise.
UIManager:broadcastEvent(Event:new("OutOfScreenSaver"))
end end
return ScreenSaverWidget return ScreenSaverWidget

Loading…
Cancel
Save