mirror of
https://github.com/britzl/monarch.git
synced 2025-06-27 10:27:49 +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:
parent
9765daa2a9
commit
c2239d67e5
@ -110,22 +110,28 @@ function M.create(node)
|
|||||||
delay = delay,
|
delay = delay,
|
||||||
in_progress = false,
|
in_progress = false,
|
||||||
urls = {},
|
urls = {},
|
||||||
|
id = nil
|
||||||
}
|
}
|
||||||
end
|
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)
|
local function start_transition(transition, transition_id, url)
|
||||||
table.insert(transition.urls, url)
|
table.insert(transition.urls, url)
|
||||||
if not transition.in_progress then
|
if not transition.in_progress then
|
||||||
table.insert(transition.urls, msg.url())
|
table.insert(transition.urls, msg.url())
|
||||||
current_transition = transition
|
|
||||||
transition.in_progress = true
|
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.fn(node, initial_data, transition.easing, transition.duration, transition.delay or 0, function()
|
||||||
transition.in_progress = false
|
finish_transition(transition)
|
||||||
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)
|
end)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -139,6 +145,9 @@ function M.create(node)
|
|||||||
-- were transitioned out
|
-- were transitioned out
|
||||||
if current_transition then
|
if current_transition then
|
||||||
current_transition.fn(node, initial_data, current_transition.easing, 0, 0)
|
current_transition.fn(node, initial_data, current_transition.easing, 0, 0)
|
||||||
|
if current_transition.in_progress then
|
||||||
|
finish_transition(current_transition)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local transition = transitions[message_id]
|
local transition = transitions[message_id]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user