Sum a span's cursor by name, and guard a scroll's re-clamp

`cursor` added `px` and `rel` by hand where the placing loop below now says
`fixed += len.without_leftover()` -- the same sum, one of them named. And
`let along = total` shadowed the closure that makes a span along the row,
two meanings for one word in one function; the local said nothing `total`
did not.

A scroll's draw writes `amt` and `snap_end`, so a second draw at another
viewport reads what the first wrote. Warm still matches cold because
re-clamping is idempotent, but nothing said so and nothing checked it: the
seed scans build scrolls and never scroll them. The test scrolls four
distances, one past the end, and widens.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
iris-aiandClaude Opus 5 committed 2026-09-19 22:04:39 -04:00
1 parent 40b89c1f79
commit 8d2b7a512b
2 files changed
+32 -4

No files matched your search

+3 -4
View File
@@ -37,8 +37,8 @@ impl Widget for Span {
painter.widget_at(child, room).len(axis)
}
};
cursor.px += len.px + self.gap;
cursor.rel += len.rel;
cursor += len.without_leftover();
cursor.px += self.gap;
lens.push(len);
}
@@ -146,12 +146,11 @@ impl Widget for Span {
// get a quarter each, which collapsing to `leftover(1)` per level does
// not give. Resolution happens at the nearest ancestor with a length,
// and the root always has one.
let along = total;
let ortho = match shrinks {
true => ortho,
false => LayoutLen::rel(1.0),
};
Size::from_axis(axis, along, ortho)
Size::from_axis(axis, total, ortho)
}
}