1
0
Fork 0
forked from wry/wry

Fix animation retarget and reflow regressions

This commit is contained in:
atagen 2026-05-24 14:55:24 +10:00
parent dfcb2d0fd6
commit 0f6f9f2602
6 changed files with 261 additions and 33 deletions

View file

@ -67,7 +67,7 @@ These paths should not be used as evidence of multiphase behavior:
- tile-to-float and float-to-tile, which deliberately use linear animation
- command-driven floating move/resize, which may animate but can overlap
- pointer or tablet drag/resize, which should not animate
- spawn-in and spawn-out, which are always linear
- spawn-in and spawn-out, which are single-phase and use the configured curve
- cross-output or cross-scale movement, which should snap
- layer-shell, overlay, override-redirect, and fullscreen map/unmap paths
@ -288,9 +288,9 @@ Hard failure:
## 9. Mixed-Action Phases
This case is easiest to prove with the planner tests because Wry currently has
few user commands that create a same-batch move for one tiled window and an
independent resize for another. The canonical geometry is:
This case is easiest to prove with the planner tests because Wry does not yet
have a confirmed stock command that reliably creates a same-batch move for one
tiled window and an independent resize for another. The canonical geometry is:
```text
start: A = (0,0)-(80,80) B = (200,0)-(280,80)
@ -306,9 +306,19 @@ To exercise the current proof directly, run:
cargo test animation::multiphase::tests::mixed_single_phase_accepts_move_and_scale_when_proven
```
For visual/manual testing, use any command sequence that can produce the same
shape in one layout batch: one window changes only x-position, and a separate,
non-overlapping window changes only height.
For visual/manual testing, the target shape is:
```text
before: [ A ] [ B ]
after: [ A ] [ B ]
[ ]
```
`A` must move horizontally without resizing. `B` must resize vertically without
moving. The two motion bounds must remain separate for the whole animation. If a
normal command sequence cannot produce that in one layout batch, treat the unit
test as the authority and record the visual test as not applicable rather than a
failure.
Expected:
@ -344,7 +354,8 @@ Use a long duration, then issue commands mid-animation:
- swap, then reverse before completion
- resize, then resize in the other direction before completion
- move a window out of a stack, then back before completion
- build `[A | [B | C | D]]`, move `C` left to form `[A | C | [B | D]]`,
then move `C` back into the stack before completion
- start a multiphase group, then change only one window's destination if a
command sequence allows it