diff options
author | Martin Robinson <mrobinson@igalia.com> | 2024-06-21 12:13:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-21 10:13:31 +0000 |
commit | 66edef806579fd0b386f4ceba473e6a9f7d0ca34 (patch) | |
tree | 830c4bb55c77f933ccd7808c91491c76c3ee85b1 /components/layout_2020/flow | |
parent | 44064b14392838fd7da148000b58c9a3cc07d4e7 (diff) | |
download | servo-66edef806579fd0b386f4ceba473e6a9f7d0ca34.tar.gz servo-66edef806579fd0b386f4ceba473e6a9f7d0ca34.zip |
layout: Simplify `Contents` a little (#32487)
Instead of duplicating some of `NonReplacedContents` in `Contents`,
divide it into either replaced and non-replaced content, since this is
how the layout system processes `Contents` always. In addition, stop
using `TryInto` to match replaced or non-replaced contents, as it is
quite confusing to handle an `Err` as a success case.
Diffstat (limited to 'components/layout_2020/flow')
-rw-r--r-- | components/layout_2020/flow/construct.rs | 10 | ||||
-rw-r--r-- | components/layout_2020/flow/root.rs | 6 |
2 files changed, 8 insertions, 8 deletions
diff --git a/components/layout_2020/flow/construct.rs b/components/layout_2020/flow/construct.rs index 5a53bbd12d9..986ae3e46d7 100644 --- a/components/layout_2020/flow/construct.rs +++ b/components/layout_2020/flow/construct.rs @@ -3,7 +3,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ use std::borrow::Cow; -use std::convert::{TryFrom, TryInto}; +use std::convert::TryFrom; use rayon::iter::{IntoParallelIterator, ParallelIterator}; use servo_arc::Arc; @@ -401,7 +401,7 @@ where DisplayInside::Flow { is_list_item: false, }, - Contents::OfPseudoElement(contents), + NonReplacedContents::OfPseudoElement(contents).into(), BoxSlot::dummy(), ); } @@ -494,8 +494,8 @@ where } let propagated_text_decoration_line = self.text_decoration_line; - let kind = match contents.try_into() { - Ok(contents) => match display_inside { + let kind = match contents { + Contents::NonReplaced(contents) => match display_inside { DisplayInside::Flow { is_list_item } if !info.style.establishes_block_formatting_context() => { @@ -513,7 +513,7 @@ where propagated_text_decoration_line, }, }, - Err(contents) => { + Contents::Replaced(contents) => { let contents = Contents::Replaced(contents); BlockLevelCreator::Independent { display_inside, diff --git a/components/layout_2020/flow/root.rs b/components/layout_2020/flow/root.rs index cea4063592c..8a1865621cb 100644 --- a/components/layout_2020/flow/root.rs +++ b/components/layout_2020/flow/root.rs @@ -18,7 +18,7 @@ use webrender_traits::display_list::ScrollSensitivity; use crate::cell::ArcRefCell; use crate::context::LayoutContext; use crate::dom::{LayoutBox, NodeExt}; -use crate::dom_traversal::{iter_child_nodes, Contents, NodeAndStyleInfo}; +use crate::dom_traversal::{iter_child_nodes, Contents, NodeAndStyleInfo, NonReplacedContents}; use crate::flexbox::FlexLevelBox; use crate::flow::float::FloatBox; use crate::flow::inline::InlineItem; @@ -206,7 +206,7 @@ impl BoxTree { loop { if let Some((primary_style, display_inside, update_point)) = update_point(dirty_node) { let contents = ReplacedContent::for_element(dirty_node, context) - .map_or(Contents::OfElement, Contents::Replaced); + .map_or_else(|| NonReplacedContents::OfElement.into(), Contents::Replaced); let info = NodeAndStyleInfo::new(dirty_node, Arc::clone(&primary_style)); let out_of_flow_absolutely_positioned_box = ArcRefCell::new( AbsolutelyPositionedBox::construct(context, &info, display_inside, contents), @@ -264,7 +264,7 @@ fn construct_for_root_element<'dom>( }; let contents = ReplacedContent::for_element(root_element, context) - .map_or(Contents::OfElement, Contents::Replaced); + .map_or_else(|| NonReplacedContents::OfElement.into(), Contents::Replaced); let root_box = if box_style.position.is_absolutely_positioned() { BlockLevelBox::OutOfFlowAbsolutelyPositionedBox(ArcRefCell::new( AbsolutelyPositionedBox::construct(context, &info, display_inside, contents), |