From f836f6a237b7f9ac52720cc50073c2bdfc711305 Mon Sep 17 00:00:00 2001 From: zwim <36999612+zwim@users.noreply.github.com> Date: Mon, 29 Jan 2024 22:37:32 +0100 Subject: [PATCH] Clear UI leftovers before doing an OTA-install, add unmovable to InfoMessage and ConfirmBox (#11412) --- frontend/device/generic/device.lua | 9 +++++++++ frontend/ui/widget/confirmbox.lua | 1 + frontend/ui/widget/container/movablecontainer.lua | 6 +++++- frontend/ui/widget/infomessage.lua | 1 + platform/kobo/koreader.sh | 2 ++ 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index f5d3ec887..a2f24426c 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -415,6 +415,15 @@ function Device:install() end UIManager:broadcastEvent(Event:new("Exit", save_quit)) end, + cancel_text = _("Later"), + cancel_callback = function() + local InfoMessage = require("ui/widget/infomessage") + UIManager:show(InfoMessage:new{ + text = _("The update will be applied the next time KOReader is started."), + unmovable = true, + }) + end, + unmovable = true, }) end diff --git a/frontend/ui/widget/confirmbox.lua b/frontend/ui/widget/confirmbox.lua index 0da79bcff..b20ebce7a 100644 --- a/frontend/ui/widget/confirmbox.lua +++ b/frontend/ui/widget/confirmbox.lua @@ -168,6 +168,7 @@ function ConfirmBox:init() } self.movable = MovableContainer:new{ frame, + unmovable = self.unmovable, } self[1] = CenterContainer:new{ dimen = Screen:getSize(), diff --git a/frontend/ui/widget/container/movablecontainer.lua b/frontend/ui/widget/container/movablecontainer.lua index f570217f7..330e60ec9 100644 --- a/frontend/ui/widget/container/movablecontainer.lua +++ b/frontend/ui/widget/container/movablecontainer.lua @@ -36,6 +36,10 @@ local MovableContainer = InputContainer:extend{ -- Events to ignore (ie: ignore_events={"hold", "hold_release"}) ignore_events = nil, + -- This can be passed if a MovableContainer should be present (as a no-op), + -- so we don't need to change the widget layout. + unmovable = nil, + -- Initial position can be set related to an existing widget -- 'anchor' should be a Geom object (a widget's 'dimen', or a point), and -- can be a function returning that object @@ -59,7 +63,7 @@ local MovableContainer = InputContainer:extend{ } function MovableContainer:init() - if Device:isTouchDevice() then + if Device:isTouchDevice() and not self.unmovable then local range = Geom:new{ x = 0, y = 0, w = Screen:getWidth(), diff --git a/frontend/ui/widget/infomessage.lua b/frontend/ui/widget/infomessage.lua index a9671e8a5..9c5d0e98b 100644 --- a/frontend/ui/widget/infomessage.lua +++ b/frontend/ui/widget/infomessage.lua @@ -169,6 +169,7 @@ function InfoMessage:init() } self.movable = MovableContainer:new{ frame, + unmovable = self.unmovable, } self[1] = CenterContainer:new{ dimen = Screen:getSize(), diff --git a/platform/kobo/koreader.sh b/platform/kobo/koreader.sh index 3a22e8682..bb7d43a38 100755 --- a/platform/kobo/koreader.sh +++ b/platform/kobo/koreader.sh @@ -92,6 +92,8 @@ ko_update_check() { NEWUPDATE="${KOREADER_DIR}/ota/koreader.updated.tar" INSTALLED="${KOREADER_DIR}/ota/koreader.installed.tar" if [ -f "${NEWUPDATE}" ]; then + # Clear screen to delete UI leftovers + ./fbink --cls ./fbink -q -y -7 -pmh "Updating KOReader" # Setup the FBInk daemon export FBINK_NAMED_PIPE="/tmp/koreader.fbink"