ReaderFooter: Smarter hardware event handlers

Make sure we don't repaint the footer over anything else than ReaderUI,
as some events are fired without direct UI interaction, so we can't be
assured of the actual state of the UI.

Fix #7556

Exposed since #7379, but could arguably happen with other existing
handlers before.
reviewable/pr7566/r1
NiLuJe 3 years ago
parent 832d915795
commit 079418d3cd

@ -1873,14 +1873,6 @@ function ReaderFooter:onUpdateFooter(force_repaint, force_recompute)
end end
end end
function ReaderFooter:onCharging()
self:onUpdateFooter(self.view.footer_visible)
end
function ReaderFooter:onNotCharging()
self:onUpdateFooter(self.view.footer_visible)
end
function ReaderFooter:updateFooterPage(force_repaint, force_recompute) function ReaderFooter:updateFooterPage(force_repaint, force_recompute)
if type(self.pageno) ~= "number" then return end if type(self.pageno) ~= "number" then return end
if self.ui.document:hasHiddenFlows() then if self.ui.document:hasHiddenFlows() then
@ -2230,24 +2222,42 @@ function ReaderFooter:onCloseDocument()
self:unscheduleFooterAutoRefresh() self:unscheduleFooterAutoRefresh()
end end
-- Used by event handlers that can trip without direct UI interaction...
function ReaderFooter:maybeUpdateFooter()
-- ...so we need to avoid stomping over unsuspecting widgets (usually, ScreenSaver).
if UIManager:getTopWidget() == "ReaderUI" then
self:onUpdateFooter(self.view.footer_visible)
else
self:onUpdateFooter()
end
end
function ReaderFooter:onFrontlightStateChanged() function ReaderFooter:onFrontlightStateChanged()
if self.settings.frontlight then if self.settings.frontlight then
self:onUpdateFooter(true) self:maybeUpdateFooter()
end end
end end
function ReaderFooter:onNetworkConnected() function ReaderFooter:onNetworkConnected()
if self.settings.wifi_status then if self.settings.wifi_status then
self:onUpdateFooter(true) self:maybeUpdateFooter()
end end
end end
function ReaderFooter:onNetworkDisconnected() function ReaderFooter:onNetworkDisconnected()
if self.settings.wifi_status then if self.settings.wifi_status then
self:onUpdateFooter(true) self:maybeUpdateFooter()
end end
end end
function ReaderFooter:onCharging()
self:maybeUpdateFooter()
end
function ReaderFooter:onNotCharging()
self:maybeUpdateFooter()
end
function ReaderFooter:onSetRotationMode() function ReaderFooter:onSetRotationMode()
self:updateFooterContainer() self:updateFooterContainer()
self:resetLayout(true) self:resetLayout(true)

Loading…
Cancel
Save