summaryrefslogtreecommitdiff
path: root/src/library/stack.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-11-23 14:25:50 +0100
committerLaurenz <laurmaedje@gmail.com>2021-11-23 14:25:50 +0100
commitc77c5a0f0ae6560a03a85e847006c29de9c7ae62 (patch)
tree18054ddb95e495cf2e198ca7bac0a5daac7b8240 /src/library/stack.rs
parent4f9e5819bbab1f93ad4f4b789038c60487a76368 (diff)
Simpler alignment resolving
Diffstat (limited to 'src/library/stack.rs')
-rw-r--r--src/library/stack.rs20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/library/stack.rs b/src/library/stack.rs
index 3d91bec7..a2e80ba5 100644
--- a/src/library/stack.rs
+++ b/src/library/stack.rs
@@ -230,19 +230,21 @@ impl<'a> StackLayouter<'a> {
before += v.resolve(self.fr, remaining);
}
StackItem::Frame(frame, align) => {
- ruler = ruler.max(align);
+ if self.stack.dir.is_positive() {
+ ruler = ruler.max(align);
+ } else {
+ ruler = ruler.min(align);
+ }
// Align along the block axis.
let parent = size.get(self.axis);
let child = frame.size.get(self.axis);
- let block = ruler.resolve(if self.stack.dir.is_positive() {
- let after = self.used.block - before;
- before .. parent - after
- } else {
- let before_with_self = before + child;
- let after = self.used.block - before_with_self;
- after .. parent - before_with_self
- });
+ let block = ruler.resolve(parent - self.used.block)
+ + if self.stack.dir.is_positive() {
+ before
+ } else {
+ self.used.block - child - before
+ };
let pos = Gen::new(Length::zero(), block).to_point(self.axis);
before += child;