Record the place.rs visibility round and point the handoff at 1ebd4d3
This commit is contained in:
1 parent
52a5c2f40c
commit
362191c3f3
2 files changed
+16
-11
No files matched your search
+4
-4
@@ -6,7 +6,7 @@ found is in `docs/LAYOUT_LOG.md`.
|
||||
|
||||
## The Iris layout repair is submitted
|
||||
|
||||
**Iris PR #19** (`layout/one-ask`) replaces closed #18. The tip is `7e2b4cd`,
|
||||
**Iris PR #19** (`layout/one-ask`) replaces closed #18. The tip is `1ebd4d3`,
|
||||
and past the reviewed `cadfba0` it is five rounds, each described in
|
||||
`docs/LAYOUT_LOG.md`:
|
||||
|
||||
@@ -16,9 +16,9 @@ and past the reviewed `cadfba0` it is five rounds, each described in
|
||||
- **The vocabulary and the container API**, `5642f20` through `58ce74d`.
|
||||
- **Naming**, `55df32a` through `40b89c1`.
|
||||
- **A sweep over the logic those names exposed**, `8d2b7a5` and `6c84b6f`.
|
||||
- **A clarity sweep**, `3da1c71` and `7e2b4cd` -- naming the pairs layout
|
||||
returns, `Span::slot`, and a diagnostic that printed the rel base while
|
||||
calling it the box.
|
||||
- **A clarity sweep**, `3da1c71` through `1ebd4d3` -- naming the pairs layout
|
||||
returns, `Span::slot`, a diagnostic that printed the rel base while calling
|
||||
it the box, and `in_parent` matching a place's own cases.
|
||||
|
||||
The settled design of the last three is in `docs/LAYOUT.md` under "Three
|
||||
names, and the one argument that says them". Bryan settled the API over
|
||||
|
||||
+12
-7
@@ -213,19 +213,24 @@ moved a box, and all three seed scans passed on `7e2b4cd` (400 at depth 5 in
|
||||
`move_idx != parent_move`; `Axis::BOTH` replaces `AXES` in three modules;
|
||||
`Len::rel_min`, `rel_max` and the unused `select_len` are gone.
|
||||
|
||||
`1ebd4d3` then closed the `PlaceSpan` item. `PlaceSpan` and `RelBase` are
|
||||
`pub` and `ui/mod.rs` re-exports `place` by name rather than by glob, the way
|
||||
it already did for `painter`, so the six `pub(crate)` accessors
|
||||
(`stated_rel_base`, `narrows_rel_base`, `within_span`, `is_sized`,
|
||||
`does_fill`, `with_rel_base`) are gone and `in_parent` matches
|
||||
`(at.span, declared)`. `!at.is_sized()` was dead: `PlaceSpan::Sized` is built
|
||||
only by `Len::as_desc`, which sets `RelBase::Len(self)` in the same literal,
|
||||
and deleting `with_rel_base` removes the only writer that could have
|
||||
separated them. Visibility here is plain `pub` plus a named re-export
|
||||
wherever the path can be hidden (Bryan, 2026-09-19); `pub(super)` is for
|
||||
inherent methods on types the crate exports, where it cannot.
|
||||
|
||||
What is left, none of it urgent:
|
||||
|
||||
- `widget_at` does three linear scans per child (`children.contains`,
|
||||
`under.iter_mut().find`, `depend_on`), so a span of *n* children is
|
||||
O(n^2) per draw. Not a problem at today's sizes; it is worth knowing
|
||||
before a long transcript list lands on it.
|
||||
- `PlaceSpan` is private to `place.rs`, so `Painter::in_parent` asks five
|
||||
yes/no questions (`stated_rel_base`, `is_sized`, `within_span`,
|
||||
`narrows_rel_base`, `does_fill`) about a three-case enum instead of
|
||||
matching it. Two of those questions are redundant with one another --
|
||||
`Sized` always states a rel base -- but only because nothing constructs
|
||||
a `Sized` without one, which nothing states. `pub(crate)` on the enum
|
||||
would let `in_parent` read as its three cases.
|
||||
- `DrawInfo` and `ActiveData` both carry `placed` and `asked`, two
|
||||
`PlaceDesc` fields distinguished only by position in every literal.
|
||||
They are genuinely different and documented, but the names are past
|
||||
|
||||
Reference in new issue
Block a user