summaryrefslogtreecommitdiff
path: root/src/model/layout.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-06-08 19:31:07 +0200
committerGitHub <noreply@github.com>2022-06-08 19:31:07 +0200
commitcd5a14bc240b21f8f538ff7fc1d116d23611d6c5 (patch)
treef4b8a7e8a941f8653d5061d2f7acc0bfd8d92b13 /src/model/layout.rs
parentb905048d4bb497252028df6d21b525fefb6b64c3 (diff)
parent72d3f3fffabe6872eb7839585bea925b89aac6a4 (diff)
Merge pull request #75 from typst/semantics
Frame Role and PDF outline
Diffstat (limited to 'src/model/layout.rs')
-rw-r--r--src/model/layout.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/model/layout.rs b/src/model/layout.rs
index b0247258..b4151c04 100644
--- a/src/model/layout.rs
+++ b/src/model/layout.rs
@@ -232,7 +232,16 @@ impl Layout for LayoutNode {
let at = ctx.pins.cursor();
let entry = StyleEntry::Barrier(Barrier::new(node.id()));
- let result = node.0.layout(ctx, regions, entry.chain(&styles));
+ let mut result = node.0.layout(ctx, regions, entry.chain(&styles));
+
+ if let Some(role) = styles.role() {
+ result = result.map(|mut frames| {
+ for frame in frames.iter_mut() {
+ Arc::make_mut(frame).apply_role(role);
+ }
+ frames
+ });
+ }
let fresh = ctx.pins.from(at);
let dirty = ctx.pins.dirty.get();