diff options
Diffstat (limited to 'src/library')
| -rw-r--r-- | src/library/align.rs | 8 | ||||
| -rw-r--r-- | src/library/boxed.rs | 11 |
2 files changed, 8 insertions, 11 deletions
diff --git a/src/library/align.rs b/src/library/align.rs index d6b14692..48475601 100644 --- a/src/library/align.rs +++ b/src/library/align.rs @@ -32,14 +32,14 @@ pub fn align(mut args: Args, ctx: &mut EvalContext) -> Value { .chain(hor.into_iter().map(|align| (Some(SpecAxis::Horizontal), align))) .chain(ver.into_iter().map(|align| (Some(SpecAxis::Vertical), align))); - let prev_main = ctx.state.aligns.main; - ctx.state.aligns = dedup_aligns(ctx, iter); - - if prev_main != ctx.state.aligns.main { + let aligns = dedup_aligns(ctx, iter); + if aligns.main != ctx.state.aligns.main { ctx.end_par_group(); ctx.start_par_group(); } + ctx.state.aligns = aligns; + if let Some(body) = body { body.eval(ctx); ctx.state = snapshot; diff --git a/src/library/boxed.rs b/src/library/boxed.rs index 0045b0bd..24880998 100644 --- a/src/library/boxed.rs +++ b/src/library/boxed.rs @@ -8,6 +8,8 @@ use crate::prelude::*; /// - `width`: The width of the box (length or relative to parent's width). /// - `height`: The height of the box (length or relative to parent's height). pub fn boxed(mut args: Args, ctx: &mut EvalContext) -> Value { + let snapshot = ctx.state.clone(); + let body = args.find::<SynTree>().unwrap_or_default(); let width = args.get::<_, Linear>(ctx, "width"); let height = args.get::<_, Linear>(ctx, "height"); @@ -16,13 +18,9 @@ pub fn boxed(mut args: Args, ctx: &mut EvalContext) -> Value { let dirs = ctx.state.dirs; let aligns = ctx.state.aligns; - let snapshot = ctx.state.clone(); - - ctx.start_group(()); - ctx.start_par_group(); + ctx.start_content_group(); body.eval(ctx); - ctx.end_par_group(); - let ((), children) = ctx.end_group(); + let children = ctx.end_content_group(); ctx.push(Fixed { width, @@ -40,6 +38,5 @@ pub fn boxed(mut args: Args, ctx: &mut EvalContext) -> Value { }); ctx.state = snapshot; - Value::None } |
