summaryrefslogtreecommitdiff
path: root/src/library/layout
diff options
context:
space:
mode:
authorMartin Haug <mhaug@live.de>2022-06-08 12:30:10 +0200
committerMartin Haug <mhaug@live.de>2022-06-08 12:30:10 +0200
commit6d8b65c4b24206a1482ea143791d7a1c410a4313 (patch)
treee11046d9b92928969b904a63cc6f59540b95d0a7 /src/library/layout
parent4640585fbdf72df993dbed46799844aa78996cce (diff)
More consistent role application
Diffstat (limited to 'src/library/layout')
-rw-r--r--src/library/layout/flow.rs2
-rw-r--r--src/library/layout/page.rs3
-rw-r--r--src/library/layout/stack.rs10
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;