diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-02-12 18:58:39 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-02-12 19:57:28 +0100 |
| commit | 3ffa7393f0632d9ee5dd9c821685a1a033d5c0ab (patch) | |
| tree | af09b0683352c4028436a2e5251dce54cf41d4aa /library/src/layout/mod.rs | |
| parent | f4856c18b9cf3f6952276cc61b557aebeb2fa651 (diff) | |
Make all nodes block-level
Diffstat (limited to 'library/src/layout/mod.rs')
| -rw-r--r-- | library/src/layout/mod.rs | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/library/src/layout/mod.rs b/library/src/layout/mod.rs index f603ef6c..3294a96c 100644 --- a/library/src/layout/mod.rs +++ b/library/src/layout/mod.rs @@ -57,6 +57,7 @@ use crate::meta::DocumentNode; use crate::prelude::*; use crate::shared::BehavedBuilder; use crate::text::{LinebreakNode, SmartQuoteNode, SpaceNode, TextNode}; +use crate::visualize::{CircleNode, EllipseNode, ImageNode, RectNode, SquareNode}; /// Root-level layout. #[capability] @@ -144,10 +145,6 @@ impl Layout for Content { } } -/// Inline-level layout. -#[capability] -pub trait Inline: Layout {} - /// Realize into a node that is capable of root-level layout. fn realize_root<'a>( vt: &mut Vt, @@ -173,7 +170,14 @@ fn realize_block<'a>( content: &'a Content, styles: StyleChain<'a>, ) -> SourceResult<(Content, StyleChain<'a>)> { - if content.has::<dyn Layout>() && !applicable(content, styles) { + if content.has::<dyn Layout>() + && !content.is::<RectNode>() + && !content.is::<SquareNode>() + && !content.is::<EllipseNode>() + && !content.is::<CircleNode>() + && !content.is::<ImageNode>() + && !applicable(content, styles) + { return Ok((content.clone(), styles)); } @@ -464,18 +468,19 @@ struct ParBuilder<'a>(BehavedBuilder<'a>); impl<'a> ParBuilder<'a> { fn accept(&mut self, content: &'a Content, styles: StyleChain<'a>) -> bool { if content.is::<SpaceNode>() - || content.is::<LinebreakNode>() + || content.is::<TextNode>() || content.is::<HNode>() || content.is::<SmartQuoteNode>() - || content.is::<TextNode>() - || content.is::<FormulaNode>() - || content.has::<dyn Inline>() + || content.is::<LinebreakNode>() + || content.is::<BoxNode>() + || content.is::<RepeatNode>() + || content.to::<FormulaNode>().map_or(false, |node| !node.block) { self.0.push(content.clone(), styles); return true; } - if content.has::<dyn LayoutMath>() { + if !content.is::<FormulaNode>() && content.has::<dyn LayoutMath>() { let formula = FormulaNode { body: content.clone(), block: false }.pack(); self.0.push(formula, styles); return true; |
