summaryrefslogtreecommitdiff
path: root/src/eval
diff options
context:
space:
mode:
authorMartin Haug <mhaug@live.de>2021-12-18 18:04:26 +0100
committerMartin Haug <mhaug@live.de>2021-12-26 15:59:24 +0100
commitb22ce6f8b84e0a75d162feb6f3699e26f86f2453 (patch)
tree76c564484d2d020d23ffbb75b133fc8bacae9454 /src/eval
parentf6c7a8292dc1ab0560408fca9d74505e9d7cf13a (diff)
Introduce equal-width columns
Diffstat (limited to 'src/eval')
-rw-r--r--src/eval/node.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/eval/node.rs b/src/eval/node.rs
index 34a4f275..d5b67adb 100644
--- a/src/eval/node.rs
+++ b/src/eval/node.rs
@@ -32,6 +32,8 @@ pub enum Node {
Linebreak,
/// A paragraph break.
Parbreak,
+ /// A column break.
+ Colbreak,
/// A page break.
Pagebreak,
/// Plain text.
@@ -212,6 +214,14 @@ impl Packer {
// paragraph.
self.parbreak(Some(styles));
}
+ Node::Colbreak => {
+ // Explicit column breaks end the current paragraph and then
+ // discards the paragraph break.
+ self.parbreak(None);
+ self.make_flow_compatible(&styles);
+ self.flow.children.push(FlowChild::Skip);
+ self.flow.last.hard();
+ }
Node::Pagebreak => {
// We must set the flow styles after the page break such that an
// empty page created by two page breaks in a row has styles at
@@ -345,7 +355,7 @@ impl Packer {
// Take the flow and erase any styles that will be inherited anyway.
let Builder { mut children, styles, .. } = mem::take(&mut self.flow);
for child in &mut children {
- child.styles_mut().erase(&styles);
+ child.styles_mut().map(|s| s.erase(&styles));
}
let flow = FlowNode(children).pack();