Document the causes and correction of layout invalidation cascades

This commit is contained in:
iris-ai committed 2026-09-17 17:27:27 -04:00
1 parent 32151f7f9f
commit ccc42f34f8
2 files changed
+148 -192

No files matched your search

+13 -8
View File
@@ -879,14 +879,19 @@ prototype has significant container-update costs and is not yet adopted into
the pinned framework. A container's length query can evaluate the offered extent
without first placing the child's reported size; the parent's subsequent draw
assigns the final slot using the same `Widget::draw` body. A parent-selected slot
still honors a fixed child's alignment within that slot. Child frames can also
retain an extent-relative region through `widget_within(DrawRegion::Extent)`;
padding and stacks use this instead of baking the current placement into child
coordinates. Pixel insets carry numeric validity through the extent. General
fractional endpoints and fractional reports retain conservative placement
dependencies; fixed-point composition must not be reassociated to remove them.
Retained movement preserves the slot chosen from measurement, even if the final
draw reports another size.
still honors a fixed child's alignment within that slot. Answer dependencies
are collected only from child sizes actually read; drawing dependencies
include all painted children. Root resize and local propagation check both
contracts. An unchanged answer with a wider validity range retains its old
contract: the parent's guarantee is still valid, and narrowing back must not
trigger layout. The same rule applies to retained drawing validity. A changed
declared size defers to its direct parent, then ordinary bottom-up propagation
stops when both contracts remain unchanged. Blanket ancestor invalidation is
unnecessary. The extent-relative child-frame API trial was removed: the major
size/resize cost came from conflating these dependencies, not from Pad and
Stack's conservative raw-placement reads. Cold layout and widespread content
changes still perform excess provisional work; that residual has not been
established as necessary for correctness.
**A `Span` leaves its children in the offered orthogonal region unless
explicitly compacted** (2026-09-12). It still reports the widest orthogonal