Make Iris layout dependencies explicit

This commit is contained in:
iris committed 2026-09-09 22:35:03 -04:00
1 parent 2bc0ff1866
commit 3ae034a47b
25 files changed
+609 -186

No files matched your search

+6 -5
View File
@@ -939,7 +939,7 @@ impl LazySpan {
(Some(h), None) => {
let (lead, trail) = placement.edges(h);
let region = self.row_region(lead, trail);
let used = painter.widget_within(self.slot_widget(slot), region);
let used = painter.widget_within(self.slot_widget(slot), region).size();
let height = resolve(used);
if height != h {
let (new_lead, new_trail) = placement.edges(height);
@@ -957,7 +957,7 @@ impl LazySpan {
Placement::Trailing(_) => 0.0,
};
let first = self.row_region(measure_from, measure_from + GENEROUS_PADDING);
let height = resolve(painter.widget_within(self.slot_widget(slot), first));
let height = resolve(painter.widget_within(self.slot_widget(slot), first).size());
let (lead, trail) = placement.edges(height);
if is_anchor {
self.stabilize_lead(painter, measure_from, lead);
@@ -1072,7 +1072,7 @@ impl Widget for LazySpan {
self.tick_fling(now)
}
fn draw(&mut self, painter: &mut Painter) -> Size {
fn draw(&mut self, painter: &mut Painter) {
let axis = self.dir.axis;
let output_len = painter.output_size().axis(axis);
self.viewport_len = painter.region().axis(axis).len().to_abs(output_len);
@@ -1081,7 +1081,8 @@ impl Widget for LazySpan {
self.repair_anchor();
if self.anchor.is_none() {
self.extents.clear();
return Size::REST;
painter.set_size(Size::REST);
return;
}
// What a wheel, a drag or a fling asked for since the last frame,
@@ -1154,7 +1155,7 @@ impl Widget for LazySpan {
self.rehome_anchor();
self.update_snap_end();
self.ctl.set_travel(self.travel());
Size::REST
painter.set_size(Size::REST);
}
fn size_hint(&self, _axis: Axis) -> Option<Len> {