diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-01-05 16:01:56 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-01-05 23:55:06 +0100 |
| commit | 5fd9c0b0d7b519802d56dd04cb61340c11014cb1 (patch) | |
| tree | a791ad72a92037426c1b170ccc543fb1afff0c77 /src/library/stack.rs | |
| parent | f7e8624b4cf31744d600167dd7f3a9d9d1626014 (diff) | |
Lift styles out of individual nodes
Diffstat (limited to 'src/library/stack.rs')
| -rw-r--r-- | src/library/stack.rs | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/library/stack.rs b/src/library/stack.rs index d36c2e15..f4f7a3cf 100644 --- a/src/library/stack.rs +++ b/src/library/stack.rs @@ -1,7 +1,7 @@ //! Side-by-side layout of nodes along an axis. use super::prelude::*; -use super::{AlignNode, SpacingKind, SpacingNode}; +use super::{AlignNode, SpacingKind}; /// `stack`: Stack children along an axis. pub fn stack(_: &mut EvalContext, args: &mut Args) -> TypResult<Value> { @@ -38,17 +38,11 @@ impl Layout for StackNode { #[derive(Hash)] pub enum StackChild { /// Spacing between other nodes. - Spacing(SpacingNode), + Spacing(SpacingKind), /// An arbitrary node. Node(PackedNode), } -impl From<SpacingKind> for StackChild { - fn from(kind: SpacingKind) -> Self { - Self::Spacing(SpacingNode { kind, styles: StyleMap::new() }) - } -} - impl Debug for StackChild { fn fmt(&self, f: &mut Formatter) -> fmt::Result { match self { @@ -61,10 +55,10 @@ impl Debug for StackChild { castable! { StackChild, Expected: "linear, fractional or template", - Value::Length(v) => SpacingKind::Linear(v.into()).into(), - Value::Relative(v) => SpacingKind::Linear(v.into()).into(), - Value::Linear(v) => SpacingKind::Linear(v).into(), - Value::Fractional(v) => SpacingKind::Fractional(v).into(), + Value::Length(v) => Self::Spacing(SpacingKind::Linear(v.into())), + Value::Relative(v) => Self::Spacing(SpacingKind::Linear(v.into())), + Value::Linear(v) => Self::Spacing(SpacingKind::Linear(v)), + Value::Fractional(v) => Self::Spacing(SpacingKind::Fractional(v)), Value::Node(v) => Self::Node(v.into_block()), } @@ -140,12 +134,12 @@ impl<'a> StackLayouter<'a> { let mut deferred = None; for child in self.children { - match child { - StackChild::Spacing(node) => { - self.layout_spacing(node.kind); + match *child { + StackChild::Spacing(kind) => { + self.layout_spacing(kind); deferred = None; } - StackChild::Node(node) => { + StackChild::Node(ref node) => { if let Some(kind) = deferred { self.layout_spacing(kind); } |
