mirror of
https://github.com/britzl/monarch.git
synced 2025-11-26 19:00:53 +01:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17df189089 | ||
|
|
387a1805eb | ||
|
|
e26da2c6c5 |
60
CHANGELOG.md
60
CHANGELOG.md
@@ -1,60 +0,0 @@
|
|||||||
## Monarch 2.8.0 [britzl released 2018-06-10]
|
|
||||||
NEW: Prevent show/hide operations while busy showing/hiding another screen
|
|
||||||
FIX: Make sure to properly finish active transitions when layout changes
|
|
||||||
|
|
||||||
## Monarch 2.7.0 [britzl released 2018-06-04]
|
|
||||||
NEW: Added monarch.top([offset]) and monarch.bottom([offset]) to get screen id of top and bottom screens (w. optional offset)
|
|
||||||
NEW: Transition messages now contain `next_screen` or `previous_screen`
|
|
||||||
|
|
||||||
## Monarch 2.6.1 [britzl released 2018-06-04]
|
|
||||||
FIX: Check if screen has already been preloaded before trying to preload it again (the callback will still be invoked).
|
|
||||||
|
|
||||||
## Monarch 2.6.0 [britzl released 2018-06-03]
|
|
||||||
NEW: monarch.preload() to load but not show a screen. Useful for content heavy screens that you wish to show without delay.
|
|
||||||
|
|
||||||
## Monarch 2.5.0 [britzl released 2018-06-01]
|
|
||||||
NEW: Transitions will send a `transition_done` message to the creator of the transition to notify that the transition has finished. The `message` will contain which transition that was finished.
|
|
||||||
|
|
||||||
## Monarch 2.4.0 [britzl released 2018-05-26]
|
|
||||||
NEW: Screen transitions are remembered so that they can be replayed when the screen layout changes.
|
|
||||||
|
|
||||||
## Monarch 2.3.0 [britzl released 2018-03-24]
|
|
||||||
CHANGE: The functions in monarch.lua that previously only accepted a hash as screen id now also accepts strings (and does the conversion internally)
|
|
||||||
|
|
||||||
## Monarch 2.2.0 [britzl released 2018-03-19]
|
|
||||||
NEW: Transitions now handle layout changes (via `layout_changed` message)
|
|
||||||
NEW: Transitions can now be notified of changes in window size using transition.window_resize(width, height)
|
|
||||||
|
|
||||||
## Monarch 2.1 [britzl released 2017-12-27]
|
|
||||||
NEW: Added Popup on Popup flag that allows a popup to be shown on top of another popup
|
|
||||||
|
|
||||||
## Monarch 2.0 [britzl released 2017-12-08]
|
|
||||||
BREAKING CHANGE: If you are using custom screen transitions (ie your own transition functions) you need to make a change to the function. The previous function signature was ```(node, to, easing, duration, delay, url)``` where ```url``` was the URL to where the ```transition_done``` message was supposed to be posted. The new function signature for a transition function is: ```(node, to, easing, duration, delay, cb)``` where ```cb``` is a function that should be invoked when the transition is completed.
|
|
||||||
|
|
||||||
FIX: Fixed issues related to screen transitions.
|
|
||||||
FIX: Code cleanup to reduce code duplication.
|
|
||||||
FIX: Improved documentation regarding transitions.
|
|
||||||
|
|
||||||
## Monarch 1.4 [britzl released 2017-12-06]
|
|
||||||
FIX: Several bugfixes for specific corner cases.
|
|
||||||
|
|
||||||
## Monarch 1.3 [britzl released 2017-12-01]
|
|
||||||
FIX: monarch.back(data, cb) set the data on the previous screen not the new current screen.
|
|
||||||
NEW: monarch.is_top(id)
|
|
||||||
NEW: monarch.get_stack()
|
|
||||||
NEW: monarch.in_stack(id)
|
|
||||||
|
|
||||||
## Monarch 1.2 [britzl released 2017-11-28]
|
|
||||||
NEW: Message id constants exposed from the Monarch module
|
|
||||||
NEW: Focus lost/gained contains id of next/previous screen
|
|
||||||
|
|
||||||
## Monarch 1.1 [britzl released 2017-11-22]
|
|
||||||
FIX: Bugfixes for transitions and state under certain circumstances
|
|
||||||
NEW: Added 'reload' option to show() command.
|
|
||||||
|
|
||||||
## Monarch 1.0 [britzl released 2017-09-28]
|
|
||||||
First public stable release
|
|
||||||
|
|
||||||
## Monarch 0.9 [britzl released 2017-09-17]
|
|
||||||
|
|
||||||
|
|
||||||
@@ -149,6 +149,14 @@ Check if a Monarch screen is visible.
|
|||||||
* `exists` (boolean) - True if the screen is visible.
|
* `exists` (boolean) - True if the screen is visible.
|
||||||
|
|
||||||
|
|
||||||
|
## monarch.set_timestep_below_popup(screen_id, timestep)
|
||||||
|
Set the timestep to apply for a screen when below a popup.
|
||||||
|
|
||||||
|
**PARAMETERS**
|
||||||
|
* `screen_id` (string|hash) - Id of the screen to change timestep setting for
|
||||||
|
* `timestep` (number) - Timestep to apply
|
||||||
|
|
||||||
|
|
||||||
## monarch.add_listener([url])
|
## monarch.add_listener([url])
|
||||||
Add a URL that will be notified of navigation events.
|
Add a URL that will be notified of navigation events.
|
||||||
|
|
||||||
|
|||||||
@@ -1155,6 +1155,19 @@ function M.bottom(offset)
|
|||||||
return screen and screen.id
|
return screen and screen.id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Set the timestep to apply for a screen when below a popup
|
||||||
|
-- @param id (string|hash) Id of the screen to change timestep setting for
|
||||||
|
-- @param timestep (number) Timestep to apply
|
||||||
|
function M.set_timestep_below_popup(id, timestep)
|
||||||
|
assert(id, "You must provide a screen id")
|
||||||
|
assert(timestep, "You must provide a timestep")
|
||||||
|
id = tohash(id)
|
||||||
|
assert(screens[id], ("There is no screen registered with id %s"):format(tostring(id)))
|
||||||
|
screens[id].timestep_below_popup = timestep
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
local function url_to_key(url)
|
local function url_to_key(url)
|
||||||
return (url.socket or hash("")) .. (url.path or hash("")) .. (url.fragment or hash(""))
|
return (url.socket or hash("")) .. (url.path or hash("")) .. (url.fragment or hash(""))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -121,11 +121,15 @@ local function create()
|
|||||||
local current_transition = nil
|
local current_transition = nil
|
||||||
|
|
||||||
local function create_transition(transition_id, node, fn, easing, duration, delay)
|
local function create_transition(transition_id, node, fn, easing, duration, delay)
|
||||||
|
assert(transition_id, "You must provide a valid transition id")
|
||||||
|
assert(node, "You must provide a node")
|
||||||
|
assert(fn, "You must provide a transition function")
|
||||||
|
|
||||||
local t = transitions[transition_id]
|
local t = transitions[transition_id]
|
||||||
-- find if there's already a transition for the node in
|
-- find if there's already a transition for the node in
|
||||||
-- question and if so update it instead of creating a new
|
-- question and if so update it instead of creating a new
|
||||||
-- transition
|
-- transition
|
||||||
for _,transition in ipairs(t) do
|
for _,transition in ipairs(t.transitions) do
|
||||||
if transition.node == node then
|
if transition.node == node then
|
||||||
transition.fn = fn
|
transition.fn = fn
|
||||||
transition.easing = easing
|
transition.easing = easing
|
||||||
|
|||||||
@@ -8,6 +8,12 @@ local easing = require "monarch.transitions.easings"
|
|||||||
|
|
||||||
return function()
|
return function()
|
||||||
|
|
||||||
|
local function wait_timeout(fn, ...)
|
||||||
|
local args = { ... }
|
||||||
|
cowait(function() return fn(unpack(args)) end, 5)
|
||||||
|
return fn(...)
|
||||||
|
end
|
||||||
|
|
||||||
describe("transitions", function()
|
describe("transitions", function()
|
||||||
before(function()
|
before(function()
|
||||||
mock_msg.mock()
|
mock_msg.mock()
|
||||||
@@ -22,6 +28,28 @@ describe("transitions", function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
it("should replace an existing transition with a new one", function()
|
||||||
|
local one = false
|
||||||
|
function dummy_transition1(node, to, easing, duration, delay, cb)
|
||||||
|
one = true
|
||||||
|
end
|
||||||
|
local two = false
|
||||||
|
function dummy_transition2(node, to, easing, duration, delay, cb)
|
||||||
|
two = true
|
||||||
|
end
|
||||||
|
|
||||||
|
local node = gui.new_box_node(vmath.vector3(), vmath.vector3(100, 100, 0))
|
||||||
|
local duration = 2
|
||||||
|
local t = transitions.create(node)
|
||||||
|
t.show_in(dummy_transition1, easing.OUT, duration, delay or 0)
|
||||||
|
t.show_in(dummy_transition2, easing.OUT, duration, delay or 0)
|
||||||
|
t.handle(monarch.TRANSITION.SHOW_IN)
|
||||||
|
|
||||||
|
wait_timeout(function() return one or two end)
|
||||||
|
assert(two)
|
||||||
|
assert(not one)
|
||||||
|
end)
|
||||||
|
|
||||||
it("should replay and immediately finish on layout change", function()
|
it("should replay and immediately finish on layout change", function()
|
||||||
function dummy_transition(node, to, easing, duration, delay, cb)
|
function dummy_transition(node, to, easing, duration, delay, cb)
|
||||||
print("dummy transition")
|
print("dummy transition")
|
||||||
|
|||||||
Reference in New Issue
Block a user