Constrain offered boxes with independent widget size bounds
This commit is contained in:
1 parent
4cb6f6882a
commit
2ac0843cb2
18 files changed
+554
-379
No files matched your search
+22
-13
@@ -84,7 +84,7 @@ fn request_edits_in_a_nested_child_reach_the_allocator() {
|
||||
let inner = (a,).span(Dir::RIGHT).add(&mut h.rsc);
|
||||
let tail = rect(Color::BLUE).add(&mut h.rsc);
|
||||
h.set_root((inner, tail).span(Dir::RIGHT));
|
||||
h.rsc.ui_mut().widgets.get_mut(&a).unwrap().x = Some(Len::px(40.0));
|
||||
h.rsc.widgets_mut().set_max_len(a, Axis::X, Len::px(40.0));
|
||||
h.frame();
|
||||
assert_corners!(h, a, (0, 0), (40, 100));
|
||||
assert_corners!(h, tail, (40, 0), (300, 100));
|
||||
@@ -109,7 +109,7 @@ fn adding_a_bound_to_a_previously_unbounded_share_reallocates_the_row() {
|
||||
h.frame();
|
||||
h.rsc
|
||||
.widgets_mut()
|
||||
.set_size_rule(id, Axis::X, SizeRule::Max(Len::px(80.0)));
|
||||
.set_size_rule(id, Axis::X, SizeRule::max(Len::px(80.0)));
|
||||
h.frame();
|
||||
assert_corners!(h, id, (0, 0), (80, 100));
|
||||
assert_corners!(h, b, (80, 0), (400, 100));
|
||||
@@ -209,7 +209,7 @@ fn bounds_also_apply_to_shares_discovered_by_drawing() {
|
||||
let a = h.rsc.widgets_mut().add_strong(Unhinted);
|
||||
h.rsc
|
||||
.widgets_mut()
|
||||
.set_size_rule(a.id(), Axis::X, SizeRule::Max(Len::px(80.0)));
|
||||
.set_size_rule(a.id(), Axis::X, SizeRule::max(Len::px(80.0)));
|
||||
let id = a.id();
|
||||
let b = rect(Color::BLUE).add_strong(&mut h.rsc);
|
||||
let b_id = b.id();
|
||||
@@ -245,7 +245,7 @@ fn a_measured_nested_share_keeps_its_comparison_for_the_outer_span() {
|
||||
let a_id = a.id();
|
||||
h.rsc
|
||||
.widgets_mut()
|
||||
.set_size_rule(a_id, Axis::X, SizeRule::Max(Len::px(80.0)));
|
||||
.set_size_rule(a_id, Axis::X, SizeRule::max(Len::px(80.0)));
|
||||
let b = rect(Color::BLUE).add_strong(&mut h.rsc);
|
||||
let b_id = b.id();
|
||||
let inner = h.rsc.widgets_mut().add_strong(Span {
|
||||
@@ -289,14 +289,11 @@ fn relative_bounds_on_a_hinted_child_track_the_offer_before_its_declared_size()
|
||||
let id = natural.id();
|
||||
h.rsc
|
||||
.widgets_mut()
|
||||
.set_size_rule(id, Axis::X, SizeRule::Max(Len::rel(0.75)));
|
||||
.set_size_rule(id, Axis::X, SizeRule::max(Len::rel(0.75)));
|
||||
h.rsc.widgets_mut().set_size_rule(
|
||||
id,
|
||||
Axis::Y,
|
||||
SizeRule::Clamp {
|
||||
min: Len::rel(0.25),
|
||||
max: Len::rel(0.75),
|
||||
},
|
||||
SizeRule::clamp(Len::rel(0.25), Len::rel(0.75)),
|
||||
);
|
||||
let inner = h.rsc.widgets_mut().add_strong(Stack {
|
||||
children: vec![natural],
|
||||
@@ -313,10 +310,7 @@ fn relative_bounds_on_a_hinted_child_track_the_offer_before_its_declared_size()
|
||||
h.rsc.widgets_mut().set_size_rule(
|
||||
bounded.id(),
|
||||
Axis::X,
|
||||
SizeRule::Clamp {
|
||||
min: Len::rel(0.25),
|
||||
max: Len::rel(0.75),
|
||||
},
|
||||
SizeRule::clamp(Len::rel(0.25), Len::rel(0.75)),
|
||||
);
|
||||
let fixed = wtext("one line, overflowing whatever it is given")
|
||||
.size(16)
|
||||
@@ -389,3 +383,18 @@ fn moving_scroll_content_preserves_its_resolved_expression_size() {
|
||||
h.frame();
|
||||
assert_corners!(h, leaf_id, (0, 240), (300, 360));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn an_intrinsic_share_cap_uses_the_allocators_fractional_base() {
|
||||
let mut h = Harness::new((300, 100));
|
||||
let head = rect(Color::BLUE).width(30).add(&mut h.rsc);
|
||||
let bounded = rect(Color::RED).max_width(Len::rel(0.25)).add(&mut h.rsc);
|
||||
let tail = rect(Color::GREEN).add(&mut h.rsc);
|
||||
h.set_root((head, bounded, tail).span(Dir::RIGHT));
|
||||
assert_corners!(h, bounded, (30, 0), (105, 100));
|
||||
assert_corners!(h, tail, (105, 0), (300, 100));
|
||||
h.resize((400, 100));
|
||||
h.frame();
|
||||
assert_corners!(h, bounded, (30, 0), (130, 100));
|
||||
assert_corners!(h, tail, (130, 0), (400, 100));
|
||||
}
|
||||
Reference in new issue
Block a user