From cd089b6194c57b2e8dff70efaa7cbd53035f7327 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 9 Dec 2022 10:21:11 +0100 Subject: Align set rule --- library/src/layout/stack.rs | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) (limited to 'library/src/layout/stack.rs') diff --git a/library/src/layout/stack.rs b/library/src/layout/stack.rs index 6432f4ac..d44dcb48 100644 --- a/library/src/layout/stack.rs +++ b/library/src/layout/stack.rs @@ -1,6 +1,6 @@ use typst::model::StyledNode; -use super::{AlignNode, ParNode, Spacing}; +use super::{AlignNode, Spacing}; use crate::prelude::*; /// Arrange content and spacing along an axis. @@ -180,21 +180,13 @@ impl<'a> StackLayouter<'a> { // Block-axis alignment of the `AlignNode` is respected // by the stack node. - let align = block - .to::() - .and_then(|node| node.aligns.get(self.axis)) - .map(|align| align.resolve(styles)) - .unwrap_or_else(|| { - if let Some(styled) = block.to::() { - let map = &styled.map; - if map.contains(ParNode::ALIGN) { - return StyleChain::new(map).get(ParNode::ALIGN); - } - } - - self.dir.start().into() - }); + let aligns = if let Some(styled) = block.to::() { + styles.chain(&styled.map).get(AlignNode::ALIGNS) + } else { + styles.get(AlignNode::ALIGNS) + }; + let align = aligns.get(self.axis).resolve(styles); let fragment = block.layout(vt, styles, self.regions)?; let len = fragment.len(); for (i, frame) in fragment.into_iter().enumerate() { -- cgit v1.2.3