Name the values layout carries, and say what a span's slot is
`along` said nothing about what it did. It is `Span::slot` now: the
stretch of the row between two distances from where the span starts
laying out, as a span of its own box, with the mirror for a negative
direction in one place. `far` is `row`, which is what the comment above
it already called it, and `shares` is `has_room` beside the
`any_leftover` it was folded into. `reached` now guards on the leftover
weight it divides by rather than on the numerator that happened to be
zero with it.
The pairs layout returns are named rather than positional: `Answer`
{size, holds} and `Drawn` {answer, drawing_holds} replace
`(Size, LayoutHolds)` and a three-tuple with two `LayoutHolds` in it,
which was the one shape the cold dump exists to catch. `try_reuse`
answers `bool` rather than `Option<()>`, and the four hand-written
copies of `move_idx != parent_move` are `ActiveData::is_region_node`.
`AXES` was declared in three modules; it is `Axis::BOTH`. `rel_min`,
`rel_max` and the unused `select_len` are gone -- `ZERO` and `FULL`
already said those. Three doc comments sat on `impl` blocks instead of
the single method inside them. `reposition` and `redepth` walked their
children by index, looking the parent up again per child; both take the
list and put it back. `Scroll`'s `fixed` and `fixed_len` are
`answer_px` and `answer_is_px`, which says which one is the length.
fmt, workspace clippy under `-D warnings` with and without
`layout-diagnostics`, and the workspace tests are clean. The cold dump
over 400 depth-5 trees is byte-identical to `6c84b6f`: 34,492 boxes,
no seed moved.
This commit is contained in:
1 parent
6c84b6f2cb
commit
3da1c71870
9 files changed
+167
-150
No files matched your search
@@ -16,9 +16,9 @@ impl Widget for Scroll {
|
||||
let answer_len = painter
|
||||
.widget_at(&self.inner, PlaceDesc::WHOLE.fills())
|
||||
.len(self.axis);
|
||||
let fixed = painter.to_px(answer_len.without_leftover(), self.axis);
|
||||
let answer_px = painter.to_px(answer_len.without_leftover(), self.axis);
|
||||
self.container_len = container_len;
|
||||
self.content_len = fixed.max(container_len);
|
||||
self.content_len = answer_px.max(container_len);
|
||||
|
||||
if self.snap_end {
|
||||
self.amt = self.content_len - self.container_len;
|
||||
@@ -31,10 +31,10 @@ impl Widget for Scroll {
|
||||
// the drawing holds for that length alone. One scrolled part way sits
|
||||
// where it is until the box shrinks past what is left of it. Kept to
|
||||
// the end, it moves with every length.
|
||||
let fixed_len = answer_len.is_px();
|
||||
if fixed_len && self.content_len <= self.container_len && align == AxisAlign::NEG {
|
||||
painter.holds(self.axis, fixed..=Px::MAX);
|
||||
} else if fixed_len && !self.snap_end {
|
||||
let answer_is_px = answer_len.is_px();
|
||||
if answer_is_px && self.content_len <= self.container_len && align == AxisAlign::NEG {
|
||||
painter.holds(self.axis, answer_px..=Px::MAX);
|
||||
} else if answer_is_px && !self.snap_end {
|
||||
let left = self.content_len - self.amt;
|
||||
painter.holds(self.axis, Px::MIN..=left);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user