mirror of
https://github.com/storytold/figcraft.git
synced 2026-10-25 02:47:02 -06:00
Layout (crates/layout): - Fill children take their size before the frame is sized, so wrapping fill text, frames that hug it and grid rows settle in a single pass (three levels deep included). - Fill children share space like CSS flexbox: min and max violations are resolved in turn instead of freezing both at once. - A single child with space-between sits at the start; a wrapped row of only fill-height children keeps their height; grids size fill-width children before their rows. - coherent_sizing: Fill only in an auto layout flow on an axis the parent doesn't hug, Hug only on auto layout frames and text (a text hugs what its resize mode grows); anything else becomes Fixed at its size. Engine: - Setting a child to Fill turns a hugging parent Fixed on that axis; a parent that starts to hug, layers leaving auto layout and layout.remove fix the rest (applied in normalize). - Moving layers: the deepest auto layout frame under the pointer wins (plain frames in a flow are items, not destinations; the dragged layers and their descendants are skipped); the frame they come from keeps them near its edge. They take the slot (or grid cell) there with the insertion line drawn in the gap and the receiving frame outlined; out of auto layout they become positioned children of the canvas or plain frame at the drop point. One undo step per drag. Slots skip hidden and absolute children. Tests: crates/layout/src/nested_tests.rs, crates/engine/src/al_nesting_tests.rs. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>