From c171a06212b0b62541dfa398d8fecd297fb1e897 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Tue, 24 Aug 2021 21:03:40 +0200 Subject: [PATCH] USBMS: Dismiss ConfirmBox on unplug Fix #8112 --- frontend/ui/elements/mass_storage.lua | 19 +++++++++++++++++-- frontend/ui/uimanager.lua | 8 ++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/frontend/ui/elements/mass_storage.lua b/frontend/ui/elements/mass_storage.lua index 32eae485f..ba3967493 100644 --- a/frontend/ui/elements/mass_storage.lua +++ b/frontend/ui/elements/mass_storage.lua @@ -55,7 +55,7 @@ function MassStorage:start(never_ask) if not never_ask and self:requireConfirmation() then local ConfirmBox = require("ui/widget/confirmbox") - UIManager:show(ConfirmBox:new{ + self.usbms_widget = ConfirmBox:new{ text = _("Share storage via USB?"), ok_text = _("Share"), ok_callback = function() @@ -65,7 +65,12 @@ function MassStorage:start(never_ask) UIManager:broadcastEvent(Event:new("Close")) UIManager:quit() end, - }) + cancel_callback = function() + self:dismiss() + end, + } + + UIManager:show(self.usbms_widget) else -- save settings before activating USBMS: UIManager:flushSettings() @@ -75,4 +80,14 @@ function MassStorage:start(never_ask) end end +-- Dismiss the ConfirmBox +function MassStorage:dismiss() + if not self.usbms_widget then + return + end + + UIManager:close(self.usbms_widget) + self.usbms_widget = nil +end + return MassStorage diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 94358d49a..99418d1c6 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -212,6 +212,10 @@ function UIManager:init() self:_afterNotCharging() if Device.screen_saver_mode then self:suspend() + else + -- Potentially dismiss the USBMS ConfirmBox + local MassStorage = require("ui/elements/mass_storage") + MassStorage:dismiss() end end self.event_handlers["__default__"] = function(input_event) @@ -366,6 +370,10 @@ function UIManager:init() self:_afterNotCharging() if Device.screen_saver_mode then self:suspend() + else + -- Potentially dismiss the USBMS ConfirmBox + local MassStorage = require("ui/elements/mass_storage") + MassStorage:dismiss() end end self.event_handlers["__default__"] = function(input_event)