summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-10-12 22:06:28 +0200
committerLaurenz <laurmaedje@gmail.com>2020-10-12 22:06:28 +0200
commitf29207d999b9aa4fe4637556a507eb252246ecf8 (patch)
tree02d934b30f20e05406edf04ccb221526eb0a7cf9 /src/library
parentdd4a4545a6b72e48cde5d2483fac5e4e76f6047f (diff)
Strongly typed groups 👔
Diffstat (limited to 'src/library')
-rw-r--r--src/library/align.rs8
-rw-r--r--src/library/boxed.rs11
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
}