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

Finish transition when layout changes (#21)

* If layout changes when transaction in progress we have to finish current transaction
This commit is contained in:
Alexey Gulev 2018-06-10 15:31:46 +03:00 committed by Björn Ritzl
parent 9765daa2a9
commit c2239d67e5

View File

@ -110,22 +110,28 @@ function M.create(node)
delay = delay,
in_progress = false,
urls = {},
id = nil
}
end
local function finish_transition(transition)
transition.in_progress = false
local message = { transition = transition.id }
while #transition.urls > 0 do
local url = table.remove(transition.urls)
msg.post(url, monarch.TRANSITION.DONE, message)
end
end
local function start_transition(transition, transition_id, url)
table.insert(transition.urls, url)
if not transition.in_progress then
table.insert(transition.urls, msg.url())
current_transition = transition
transition.in_progress = true
transition.id = transition_id
current_transition = transition
transition.fn(node, initial_data, transition.easing, transition.duration, transition.delay or 0, function()
transition.in_progress = false
local message = { transition = transition_id }
while #transition.urls > 0 do
local url = table.remove(transition.urls)
msg.post(url, monarch.TRANSITION.DONE, message)
end
finish_transition(transition)
end)
end
end
@ -139,6 +145,9 @@ function M.create(node)
-- were transitioned out
if current_transition then
current_transition.fn(node, initial_data, current_transition.easing, 0, 0)
if current_transition.in_progress then
finish_transition(current_transition)
end
end
else
local transition = transitions[message_id]