mirror of
https://github.com/rive-app/rive-cpp.git
synced 2026-01-18 13:11:19 +01:00
chore: process listeners in specified order (#11487) 3253c0beae
* chore: process listeners in specified order * resolve sorting on export Co-authored-by: hernan <hernan@rive.app>
This commit is contained in:
@@ -1 +1 @@
|
||||
c83919a2477577deac9afdc2f22b83b9093e4b93
|
||||
3253c0beae3bdc2d68db7cf52eb4490e17276c58
|
||||
|
||||
BIN
tests/unit_tests/assets/sorted_listeners.riv
Normal file
BIN
tests/unit_tests/assets/sorted_listeners.riv
Normal file
Binary file not shown.
@@ -527,4 +527,67 @@ TEST_CASE("Transition with list index can be compared to a number", "[silver]")
|
||||
artboard->draw(renderer.get());
|
||||
|
||||
CHECK(silver.matches("transition_index_condition"));
|
||||
}
|
||||
|
||||
TEST_CASE("Listeners are sorted in the right order", "[silver]")
|
||||
{
|
||||
SerializingFactory silver;
|
||||
auto file = ReadRiveFile("assets/sorted_listeners.riv", &silver);
|
||||
|
||||
auto artboard = file->artboardDefault();
|
||||
silver.frameSize(artboard->width(), artboard->height());
|
||||
|
||||
auto stateMachine = artboard->stateMachineAt(0);
|
||||
|
||||
auto vmi = file->createViewModelInstance(artboard.get());
|
||||
|
||||
stateMachine->bindViewModelInstance(vmi);
|
||||
stateMachine->advanceAndApply(0.0f);
|
||||
auto renderer = silver.makeRenderer();
|
||||
artboard->draw(renderer.get());
|
||||
|
||||
// Down (Move + Down happen on the same frame, but down happens after move)
|
||||
silver.addFrame();
|
||||
stateMachine->pointerDown(Vec2D(250.0f, 250.0f), 0);
|
||||
stateMachine->advanceAndApply(0.016f);
|
||||
artboard->draw(renderer.get());
|
||||
|
||||
// Click (Up + Click on same frame, but click happens after up)
|
||||
silver.addFrame();
|
||||
stateMachine->pointerUp(Vec2D(250.0f, 250.0f), 0);
|
||||
stateMachine->advanceAndApply(0.016f);
|
||||
artboard->draw(renderer.get());
|
||||
|
||||
// Exit
|
||||
silver.addFrame();
|
||||
stateMachine->pointerMove(Vec2D(0.0f, 0.0f), 0, 0);
|
||||
stateMachine->advanceAndApply(0.016f);
|
||||
artboard->draw(renderer.get());
|
||||
|
||||
// Drag gesture
|
||||
silver.addFrame();
|
||||
stateMachine->pointerDown(Vec2D(250.0f, 250.0f), 0);
|
||||
stateMachine->pointerMove(Vec2D(251.0f, 251.0f), 0);
|
||||
stateMachine->advanceAndApply(0.016f);
|
||||
artboard->draw(renderer.get());
|
||||
|
||||
// Up
|
||||
silver.addFrame();
|
||||
stateMachine->pointerUp(Vec2D(251.0f, 251.0f), 0);
|
||||
stateMachine->advanceAndApply(0.016f);
|
||||
artboard->draw(renderer.get());
|
||||
|
||||
// Exit
|
||||
silver.addFrame();
|
||||
stateMachine->pointerMove(Vec2D(0.0f, 0.0f), 0);
|
||||
stateMachine->advanceAndApply(0.016f);
|
||||
artboard->draw(renderer.get());
|
||||
|
||||
// (Move): Enter + Move, but move happens after enter
|
||||
silver.addFrame();
|
||||
stateMachine->pointerMove(Vec2D(251.0f, 251.0f), 0);
|
||||
stateMachine->advanceAndApply(0.016f);
|
||||
artboard->draw(renderer.get());
|
||||
|
||||
CHECK(silver.matches("sorted_listeners"));
|
||||
}
|
||||
BIN
tests/unit_tests/silvers/sorted_listeners.sriv
Normal file
BIN
tests/unit_tests/silvers/sorted_listeners.sriv
Normal file
Binary file not shown.
Reference in New Issue
Block a user