From def02846ecb84f19b2573b547041670ce0e21c13 Mon Sep 17 00:00:00 2001 From: zwim <36999612+zwim@users.noreply.github.com> Date: Sun, 12 Jun 2022 19:16:46 +0200 Subject: [PATCH] AutoDim: Don't update footer if not necessary (#9192) --- frontend/ui/widget/configdialog.lua | 1 + frontend/ui/widget/screensaverwidget.lua | 1 + plugins/autodim.koplugin/main.lua | 27 ++++++++++++++++++++---- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/frontend/ui/widget/configdialog.lua b/frontend/ui/widget/configdialog.lua index bf88ade75..ccc21bfba 100644 --- a/frontend/ui/widget/configdialog.lua +++ b/frontend/ui/widget/configdialog.lua @@ -844,6 +844,7 @@ Widget that displays config menubar and config panel local ConfigDialog = FocusManager:new{ --is_borderless = false, + name = "ConfigDialog", panel_index = 1, is_fresh = true, } diff --git a/frontend/ui/widget/screensaverwidget.lua b/frontend/ui/widget/screensaverwidget.lua index 89abc6788..9079229a6 100644 --- a/frontend/ui/widget/screensaverwidget.lua +++ b/frontend/ui/widget/screensaverwidget.lua @@ -8,6 +8,7 @@ local UIManager = require("ui/uimanager") local Screen = Device.screen local ScreenSaverWidget = InputContainer:new{ + name = "ScreenSaver", widget = nil, background = nil, } diff --git a/plugins/autodim.koplugin/main.lua b/plugins/autodim.koplugin/main.lua index 067718a7a..474e2118d 100644 --- a/plugins/autodim.koplugin/main.lua +++ b/plugins/autodim.koplugin/main.lua @@ -37,6 +37,8 @@ function AutoDim:init() self:_schedule_autodim_task() self.isCurrentlyDimming = false -- true during or after the dimming ramp self.trap_widget = nil + + self.top_widget_before_dim = nil end function AutoDim:addToMainMenu(menu_items) @@ -164,7 +166,7 @@ end function AutoDim:restoreFrontlight() Device.powerd:setIntensity(self.autodim_save_fl) - UIManager:broadcastEvent(Event:new("UpdateFooter", true, true)) + self:updateFooter(true) self:_unschedule_ramp_task() self:_schedule_autodim_task() end @@ -186,10 +188,11 @@ function AutoDim:onResume() if self.trap_widget then UIManager:close(self.trap_widget) self.trap_widget = nil + self.widget_before_dim = nil end UIManager:scheduleIn(1, function() Device.powerd:setIntensity(self.autodim_save_fl) - UIManager:broadcastEvent(Event:new("UpdateFooter", true, true)) + self:updateFooter(true) end) self.isCurrentlyDimming = false end @@ -204,6 +207,19 @@ function AutoDim:onSuspend() end end +function AutoDim:updateFooter(clear) + -- update footer only if it is not covered by another widget + if self.top_widget_before_dim == "ReaderUI" or + (self.top_widget_before_dim ~= "ConfigDialog" and self.top_widget_before_dim ~= "ScreenSaver" + and self.top_widget_before_dim ~= "VirtualKeyboard") then + + UIManager:broadcastEvent(Event:new("UpdateFooter", self.view and self.view.footer_visible or false)) + end + if clear then + self.top_widget_before_dim = nil + end +end + function AutoDim:autodim_task() if self.isCurrentlyDimming then return end @@ -218,6 +234,9 @@ function AutoDim:autodim_task() end } + -- This is the active widget before showing self.trap_widget + self.top_widget_before_dim = UIManager:getTopWidget() + UIManager:show(self.trap_widget) -- suppress taps during dimming self.autodim_save_fl = Device.powerd:frontlightIntensity() @@ -248,7 +267,7 @@ function AutoDim:ramp_task() self.ramp_event_countdown = self.ramp_event_countdown - 1 if self.ramp_event_countdown <= 0 then -- Update footer on every self.ramp_event_countdown call - UIManager:broadcastEvent(Event:new("UpdateFooter", true, true)) + self:updateFooter() self.ramp_event_countdown = self.ramp_event_countdown_startvalue end self:_schedule_ramp_task() -- Reschedule only if not ready @@ -256,7 +275,7 @@ function AutoDim:ramp_task() end if fl_level == self.autodim_end_fl and self.ramp_event_countdown_startvalue > 0 then -- Update footer at the end of the ramp. - UIManager:broadcastEvent(Event:new("UpdateFooter", true, true)) + self:updateFooter() end end