From b22ce6f8b84e0a75d162feb6f3699e26f86f2453 Mon Sep 17 00:00:00 2001 From: Martin Haug Date: Sat, 18 Dec 2021 18:04:26 +0100 Subject: Introduce equal-width columns --- src/eval/node.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/eval/node.rs') 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(); -- cgit v1.2.3 From 7efdcdf2472257102c6b4b30bf285e2058924070 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 26 Dec 2021 17:34:04 +0100 Subject: Apply simple suggestions from code review Co-Authored-By: Laurenz --- src/eval/node.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/eval/node.rs') diff --git a/src/eval/node.rs b/src/eval/node.rs index d5b67adb..43cb906b 100644 --- a/src/eval/node.rs +++ b/src/eval/node.rs @@ -354,8 +354,8 @@ 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().map(|s| s.erase(&styles)); + for local in children.iter_mut().filter_map(FlowChild::styles_mut) { + local.erase(&styles); } let flow = FlowNode(children).pack(); -- cgit v1.2.3