From c38d72383d2068361d635d6c1c78ba97aa917801 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Thu, 9 Mar 2023 14:17:24 +0100 Subject: Make all optional fields settable --- library/src/layout/stack.rs | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'library/src/layout/stack.rs') diff --git a/library/src/layout/stack.rs b/library/src/layout/stack.rs index f4e4ab2c..c21fa884 100644 --- a/library/src/layout/stack.rs +++ b/library/src/layout/stack.rs @@ -22,24 +22,21 @@ use crate::prelude::*; /// Category: layout #[node(Layout)] pub struct StackNode { - /// The childfren to stack along the axis. - #[variadic] - pub children: Vec, - /// The direction along which the items are stacked. Possible values are: /// /// - `{ltr}`: Left to right. /// - `{rtl}`: Right to left. /// - `{ttb}`: Top to bottom. /// - `{btt}`: Bottom to top. - #[named] #[default(Dir::TTB)] pub dir: Dir, /// Spacing to insert between items where no explicit spacing was provided. - #[named] - #[default] pub spacing: Option, + + /// The childfren to stack along the axis. + #[variadic] + pub children: Vec, } impl Layout for StackNode { @@ -49,10 +46,10 @@ impl Layout for StackNode { styles: StyleChain, regions: Regions, ) -> SourceResult { - let mut layouter = StackLayouter::new(self.dir(), regions, styles); + let mut layouter = StackLayouter::new(self.dir(styles), regions, styles); // Spacing to insert before the next block. - let spacing = self.spacing(); + let spacing = self.spacing(styles); let mut deferred = None; for child in self.children() { @@ -201,12 +198,15 @@ impl<'a> StackLayouter<'a> { // Block-axis alignment of the `AlignNode` is respected // by the stack node. - let aligns = match block.to::() { - Some(styled) => AlignNode::alignment_in(styles.chain(&styled.map())), - None => AlignNode::alignment_in(styles), - }; + let aligns = if let Some(align) = block.to::() { + align.alignment(styles) + } else if let Some(styled) = block.to::() { + AlignNode::alignment_in(styles.chain(&styled.map())) + } else { + AlignNode::alignment_in(styles) + } + .resolve(styles); - let aligns = aligns.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