summaryrefslogtreecommitdiffstats
path: root/widget/src/container.rs
diff options
context:
space:
mode:
Diffstat (limited to 'widget/src/container.rs')
-rw-r--r--widget/src/container.rs33
1 files changed, 18 insertions, 15 deletions
diff --git a/widget/src/container.rs b/widget/src/container.rs
index 5dd7705b..b41a6023 100644
--- a/widget/src/container.rs
+++ b/widget/src/container.rs
@@ -312,24 +312,27 @@ pub fn layout(
layout_content: impl FnOnce(&layout::Limits) -> layout::Node,
) -> layout::Node {
let limits = limits
- .loose()
- .max_width(max_width)
- .max_height(max_height)
.width(width)
- .height(height);
+ .height(height)
+ .max_width(max_width)
+ .max_height(max_height);
- let mut content = layout_content(&limits.pad(padding).loose());
+ let content = layout_content(&limits.shrink(padding).loose());
let padding = padding.fit(content.size(), limits.max());
- let size = limits.pad(padding).resolve(content.size());
-
- content.move_to(Point::new(padding.left, padding.top));
- content.align(
- Alignment::from(horizontal_alignment),
- Alignment::from(vertical_alignment),
- size,
- );
-
- layout::Node::with_children(size.pad(padding), vec![content])
+ let size = limits
+ .shrink(padding)
+ .resolve(content.size(), width, height);
+
+ layout::Node::with_children(
+ size.expand(padding),
+ vec![content
+ .move_to(Point::new(padding.left, padding.top))
+ .align(
+ Alignment::from(horizontal_alignment),
+ Alignment::from(vertical_alignment),
+ size,
+ )],
+ )
}
/// Draws the background of a [`Container`] given its [`Appearance`] and its `bounds`.