ScreenSaver: Delay footer/header repaint if screensaver_delay is enabled (#7334)

Fix #7327
reviewable/pr7345/r1
NiLuJe 3 years ago committed by GitHub
parent 013a6076c1
commit d243097d75
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -116,7 +116,25 @@ ReaderCoptListener.onSetStatusLine = ReaderCoptListener.rescheduleHeaderRefreshI
ReaderCoptListener.onSetViewMode = ReaderCoptListener.rescheduleHeaderRefreshIfNeeded ReaderCoptListener.onSetViewMode = ReaderCoptListener.rescheduleHeaderRefreshIfNeeded
-- ReaderView:onSetViewMode(), which sets view.view_mode, is called before -- ReaderView:onSetViewMode(), which sets view.view_mode, is called before
-- ReaderCoptListener.onSetViewMode, so we'll get the updated value -- ReaderCoptListener.onSetViewMode, so we'll get the updated value
ReaderCoptListener.onResume = ReaderCoptListener.rescheduleHeaderRefreshIfNeeded function ReaderCoptListener:onResume()
-- Don't repaint the header until OutOfScreenSaver if screensaver_delay is enabled...
local screensaver_delay = G_reader_settings:readSetting("screensaver_delay")
if screensaver_delay and screensaver_delay ~= "disable" then
self._delayed_screensaver = true
return
end
ReaderCoptListener:rescheduleHeaderRefreshIfNeeded()
end
function ReaderCoptListener:onOutOfScreenSaver()
if not self._delayed_screensaver then
return
end
self._delayed_screensaver = nil
ReaderCoptListener:rescheduleHeaderRefreshIfNeeded()
end
-- Unschedule on these events -- Unschedule on these events
ReaderCoptListener.onCloseDocument = ReaderCoptListener.unscheduleHeaderRefresh ReaderCoptListener.onCloseDocument = ReaderCoptListener.unscheduleHeaderRefresh

@ -2177,6 +2177,24 @@ function ReaderFooter:refreshFooter(refresh, signal)
end end
function ReaderFooter:onResume() function ReaderFooter:onResume()
-- Don't repaint the footer until OutOfScreenSaver if screensaver_delay is enabled...
local screensaver_delay = G_reader_settings:readSetting("screensaver_delay")
if screensaver_delay and screensaver_delay ~= "disable" then
self._delayed_screensaver = true
return
end
-- Force a footer repaint on resume if it was visible
self:onUpdateFooter(self.view.footer_visible)
self:rescheduleFooterAutoRefreshIfNeeded()
end
function ReaderFooter:onOutOfScreenSaver()
if not self._delayed_screensaver then
return
end
self._delayed_screensaver = nil
-- Force a footer repaint on resume if it was visible -- Force a footer repaint on resume if it was visible
self:onUpdateFooter(self.view.footer_visible) self:onUpdateFooter(self.view.footer_visible)
self:rescheduleFooterAutoRefreshIfNeeded() self:rescheduleFooterAutoRefreshIfNeeded()

@ -208,7 +208,7 @@ return {
} }
}, },
{ {
text = _("Delay when exit from screensaver"), text = _("Keep the screensaver on screen after wakeup"),
sub_item_table = { sub_item_table = {
{ {
text = _("Disable"), text = _("Disable"),
@ -224,7 +224,7 @@ return {
end end
}, },
{ {
text = _("1 second"), text = _("For 1 second"),
checked_func = function() checked_func = function()
if screensaverDelay() == "1" then if screensaverDelay() == "1" then
return true return true
@ -237,7 +237,7 @@ return {
end end
}, },
{ {
text = _("3 seconds"), text = _("For 3 seconds"),
checked_func = function() checked_func = function()
if screensaverDelay() == "3" then if screensaverDelay() == "3" then
return true return true
@ -250,7 +250,7 @@ return {
end end
}, },
{ {
text = _("5 seconds"), text = _("For 5 seconds"),
checked_func = function() checked_func = function()
if screensaverDelay() == "5" then if screensaverDelay() == "5" then
return true return true
@ -263,7 +263,7 @@ return {
end end
}, },
{ {
text = _("Tap to exit screensaver"), text = _("Until a tap"),
checked_func = function() checked_func = function()
if screensaverDelay() == "tap" then if screensaverDelay() == "tap" then
return true return true

@ -1,4 +1,5 @@
local Device = require("device") local Device = require("device")
local Event = require("ui/event")
local Geom = require("ui/geometry") local Geom = require("ui/geometry")
local GestureRange = require("ui/gesturerange") local GestureRange = require("ui/gesturerange")
local FrameContainer = require("ui/widget/container/framecontainer") local FrameContainer = require("ui/widget/container/framecontainer")
@ -73,6 +74,8 @@ end
function ScreenSaverWidget:onClose() function ScreenSaverWidget:onClose()
UIManager:close(self, "full") UIManager:close(self, "full")
-- Will come after the Resume event (how much later depends on screensaver_delay).
UIManager:broadcastEvent(Event:new("OutOfScreenSaver"))
return true return true
end end

Loading…
Cancel
Save