diff --git a/monarch/monarch.lua b/monarch/monarch.lua index 2b1ff08..7bd2b97 100644 --- a/monarch/monarch.lua +++ b/monarch/monarch.lua @@ -988,12 +988,12 @@ function M.back(options, data, cb) local screen = table.remove(stack) if screen then log("back()", screen.id) - local back_cb = callbacks.track() local top = stack[#stack] -- if we go back to the same screen we need to first hide it -- and wait until it is hidden before we show it again local same_screen = top and top.id == screen.id if same_screen or (options and options.sequential) then + local back_cb = callbacks.track() back_out(screen, top, WAIT_FOR_TRANSITION, function() if data then top.data = data diff --git a/test/test_monarch.lua b/test/test_monarch.lua index d89b31b..bb6bc72 100644 --- a/test/test_monarch.lua +++ b/test/test_monarch.lua @@ -81,7 +81,7 @@ return function() monarch.when_preloaded(screen_id, done) end) end - + describe("monarch", function() before(function() mock_msg.mock() @@ -415,7 +415,7 @@ return function() assert(mock_msg.messages(URL1)[2].message.screen == SCREEN1) assert(mock_msg.messages(URL2)[2].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) assert(mock_msg.messages(URL2)[2].message.screen == SCREEN1) - + monarch.remove_listener(URL2) monarch.show(SCREEN2) assert(wait_until_not_busy()) @@ -424,10 +424,10 @@ return function() assert(#mock_msg.messages(URL2) == 2) assert(mock_msg.messages(URL1)[3].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) assert(mock_msg.messages(URL1)[3].message.screen == SCREEN2) - assert(mock_msg.messages(URL1)[4].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) - assert(mock_msg.messages(URL1)[4].message.screen == SCREEN2) - assert(mock_msg.messages(URL1)[5].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED) - assert(mock_msg.messages(URL1)[5].message.screen == SCREEN1) + assert(mock_msg.messages(URL1)[4].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED) + assert(mock_msg.messages(URL1)[4].message.screen == SCREEN1) + assert(mock_msg.messages(URL1)[5].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) + assert(mock_msg.messages(URL1)[5].message.screen == SCREEN2) assert(mock_msg.messages(URL1)[6].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED) assert(mock_msg.messages(URL1)[6].message.screen == SCREEN1) @@ -438,10 +438,10 @@ return function() assert(#mock_msg.messages(URL2) == 2) assert(mock_msg.messages(URL1)[7].message_id == monarch.SCREEN_TRANSITION_IN_STARTED) assert(mock_msg.messages(URL1)[7].message.screen == SCREEN1) - assert(mock_msg.messages(URL1)[8].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) - assert(mock_msg.messages(URL1)[8].message.screen == SCREEN1) - assert(mock_msg.messages(URL1)[9].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED) - assert(mock_msg.messages(URL1)[9].message.screen == SCREEN2) + assert(mock_msg.messages(URL1)[8].message_id == monarch.SCREEN_TRANSITION_OUT_STARTED) + assert(mock_msg.messages(URL1)[8].message.screen == SCREEN2) + assert(mock_msg.messages(URL1)[9].message_id == monarch.SCREEN_TRANSITION_IN_FINISHED) + assert(mock_msg.messages(URL1)[9].message.screen == SCREEN1) assert(mock_msg.messages(URL1)[10].message_id == monarch.SCREEN_TRANSITION_OUT_FINISHED) assert(mock_msg.messages(URL1)[10].message.screen == SCREEN2) end)