Add multiphase no-overlap planner groundwork
This commit is contained in:
parent
2115518edf
commit
41d2fef177
3 changed files with 629 additions and 0 deletions
|
|
@ -30,6 +30,15 @@ be handled deliberately.
|
|||
partial inspiration for tiling style and titlebar/grouping behavior.
|
||||
- Mono mode should mostly avoid animations. Exceptions are windows entering or
|
||||
exiting mono mode, where a visual transition can clarify the hierarchy change.
|
||||
- Multiphase shrink steps should not normally need to reduce a tiled window far
|
||||
below roughly one quarter of the relevant full size. The implementation may
|
||||
enforce a conservative sanity minimum, and pathological cases may fall back.
|
||||
- If the no-overlap planner cannot produce a legal sequence, only the affected
|
||||
group should fall back to linear animation. This is expected to be rare for
|
||||
valid tiling layouts.
|
||||
- When entering mono mode, the active child should animate to the mono geometry.
|
||||
Inactive siblings may snap invisible. Floats may overlap normally and do not
|
||||
need the no-overlap planner.
|
||||
|
||||
## Texture Freezing Decision
|
||||
|
||||
|
|
@ -188,12 +197,22 @@ Preferred approach:
|
|||
animated visual actors.
|
||||
- Derive every leaf's per-phase rect from one phase schedule so parent and child
|
||||
effects cannot compose into forbidden motion.
|
||||
- Build the planner as pure geometry first. Live integration should collect
|
||||
eligible leaf `(old, new)` rects across a command-driven layout pass, then
|
||||
submit planner-produced phases as a batch. Per-node `tl_change_extents` calls
|
||||
are too incremental to plan safely by themselves.
|
||||
- Add container-level grouping only after the leaf planner proves correct.
|
||||
- Include hierarchy-transition metadata in the planner input: source parent,
|
||||
target parent, source depth, target depth, and whether the window is ascending,
|
||||
descending, or staying at the same hierarchy level.
|
||||
- For mono containers, suppress ordinary in-mono focus/tab changes. Animate only
|
||||
transitions into mono, out of mono, or across the mono boundary.
|
||||
- When entering mono, the active child animates to the full mono area and
|
||||
inactive siblings snap invisible. When exiting mono, ordinary tiled geometry
|
||||
may animate from the mono child where that produces a clear hierarchy
|
||||
transition.
|
||||
- If a legal no-overlap sequence cannot be found for a group, fall back to the
|
||||
linear animator for that group only. Float windows are outside this invariant.
|
||||
|
||||
Tests:
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue