3
0
mirror of https://github.com/britzl/monarch.git synced 2025-06-27 10:27:49 +02:00

Delay reset of timestep when going back from popup

Fixes #84
This commit is contained in:
Björn Ritzl 2022-02-23 12:46:04 +01:00
parent 9764c68475
commit 1dec704047

View File

@ -650,10 +650,10 @@ local function back_out(screen, next_screen, wait_for_transition, cb)
change_context(screen) change_context(screen)
release_input(screen, next_screen) release_input(screen, next_screen)
focus_lost(screen, next_screen) focus_lost(screen, next_screen)
transition(screen, M.TRANSITION.BACK_OUT, { next_screen = next_screen and next_screen.id }, wait_for_transition)
if next_screen and screen.popup then if next_screen and screen.popup then
reset_timestep(next_screen) reset_timestep(next_screen)
end end
transition(screen, M.TRANSITION.BACK_OUT, { next_screen = next_screen and next_screen.id }, wait_for_transition)
screen.visible = false screen.visible = false
unload(screen) unload(screen)
active_transition_count = active_transition_count - 1 active_transition_count = active_transition_count - 1
@ -921,9 +921,20 @@ function M.back(data, cb)
if data then if data then
top.data = data top.data = data
end end
back_in(top, screen, DO_NOT_WAIT_FOR_TRANSITION, function() -- if the screen we are backing out from is a popup and the screen we go
back_out(screen, top, WAIT_FOR_TRANSITION, back_cb) -- back to is not a popup we need to let the popup completely hide before
end) -- we start working on the screen we go back to
-- we do this to ensure that we do not reset the times step of the screen
-- we go back to until it is no longer obscured by the popup
if screen.popup and not top.popup then
back_out(screen, top, WAIT_FOR_TRANSITION, function()
back_in(top, screen, WAIT_FOR_TRANSITION, back_cb)
end)
else
back_in(top, screen, DO_NOT_WAIT_FOR_TRANSITION, function()
back_out(screen, top, WAIT_FOR_TRANSITION, back_cb)
end)
end
else else
back_out(screen, top, WAIT_FOR_TRANSITION, back_cb) back_out(screen, top, WAIT_FOR_TRANSITION, back_cb)
end end