diff options
| author | Martin Haug <mhaug@live.de> | 2022-06-08 12:30:10 +0200 |
|---|---|---|
| committer | Martin Haug <mhaug@live.de> | 2022-06-08 12:30:10 +0200 |
| commit | 6d8b65c4b24206a1482ea143791d7a1c410a4313 (patch) | |
| tree | e11046d9b92928969b904a63cc6f59540b95d0a7 /src/library/layout | |
| parent | 4640585fbdf72df993dbed46799844aa78996cce (diff) | |
More consistent role application
Diffstat (limited to 'src/library/layout')
| -rw-r--r-- | src/library/layout/flow.rs | 2 | ||||
| -rw-r--r-- | src/library/layout/page.rs | 3 | ||||
| -rw-r--r-- | src/library/layout/stack.rs | 10 |
3 files changed, 9 insertions, 6 deletions
diff --git a/src/library/layout/flow.rs b/src/library/layout/flow.rs index 0ba84b09..f779c8b1 100644 --- a/src/library/layout/flow.rs +++ b/src/library/layout/flow.rs @@ -184,7 +184,7 @@ impl FlowLayouter { let len = frames.len(); for (i, mut frame) in frames.into_iter().enumerate() { // Set the generic block role. - if frame.role().is_none() { + if frame.role().map_or(true, Role::is_weak) { Arc::make_mut(&mut frame).apply_role(Role::GenericBlock); } diff --git a/src/library/layout/page.rs b/src/library/layout/page.rs index d524839b..8bd507c4 100644 --- a/src/library/layout/page.rs +++ b/src/library/layout/page.rs @@ -130,7 +130,8 @@ impl PageNode { let pod = Regions::one(area, area, Spec::splat(true)); let role_map = StyleMap::with_role(role); let styles = role_map.chain(&styles); - let sub = content.layout(ctx, &pod, styles)?.remove(0); + let mut sub = content.layout(ctx, &pod, styles)?.remove(0); + Arc::make_mut(&mut sub).apply_role(role); if std::ptr::eq(marginal, background) { Arc::make_mut(frame).prepend_frame(pos, sub); diff --git a/src/library/layout/stack.rs b/src/library/layout/stack.rs index 7bad01d9..9c2cbccd 100644 --- a/src/library/layout/stack.rs +++ b/src/library/layout/stack.rs @@ -192,12 +192,14 @@ impl<'a> StackLayouter<'a> { self.dir.start().into() }); - let role_map = StyleMap::with_role(Role::GenericBlock); - let styles = role_map.chain(&styles); - let frames = node.layout(ctx, &self.regions, styles)?; let len = frames.len(); - for (i, frame) in frames.into_iter().enumerate() { + for (i, mut frame) in frames.into_iter().enumerate() { + // Set the generic block role. + if frame.role().map_or(true, Role::is_weak) { + Arc::make_mut(&mut frame).apply_role(Role::GenericBlock); + } + // Grow our size, shrink the region and save the frame for later. let size = frame.size.to_gen(self.axis); self.used.main += size.main; |
