summaryrefslogtreecommitdiff
path: root/src/layout/stack.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout/stack.rs')
-rw-r--r--src/layout/stack.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/layout/stack.rs b/src/layout/stack.rs
index 2a0b2806..92a1337f 100644
--- a/src/layout/stack.rs
+++ b/src/layout/stack.rs
@@ -86,8 +86,8 @@ impl<'a> StackLayouter<'a> {
Self {
stack,
main,
+ constraints: Constraints::new(expand),
expand,
- constraints: Constraints::new(regions.expand),
regions,
full,
used: Gen::zero(),
@@ -145,7 +145,10 @@ impl<'a> StackLayouter<'a> {
while !self.regions.current.get(self.main).fits(size.main)
&& !self.regions.in_full_last()
{
- self.constraints.max.get_mut(self.main).set_min(size.main);
+ self.constraints
+ .max
+ .get_mut(self.main)
+ .set_min(size.main + self.used.main);
self.finish_region();
}
@@ -188,7 +191,9 @@ impl<'a> StackLayouter<'a> {
// Make sure the stack's size satisfies the aspect ratio.
if let Some(aspect) = self.stack.aspect {
- self.constraints.exact = self.regions.current.to_spec().map(Some);
+ self.constraints.exact = self.full.to_spec().map(Some);
+ self.constraints.min = Spec::splat(None);
+ self.constraints.max = Spec::splat(None);
let width = size
.width
.max(aspect.into_inner() * size.height)
@@ -244,6 +249,6 @@ impl<'a> StackLayouter<'a> {
self.used = Gen::zero();
self.ruler = Align::Start;
self.finished.push(output.constrain(self.constraints));
- self.constraints = Constraints::new(self.regions.expand);
+ self.constraints = Constraints::new(expand);
}
}