diff --git a/components/layout_2020/flow/root.rs b/components/layout_2020/flow/root.rs index d84c5bc5495..21d99742367 100644 --- a/components/layout_2020/flow/root.rs +++ b/components/layout_2020/flow/root.rs @@ -437,17 +437,17 @@ impl FragmentTree { pub(crate) fn find( &self, - mut process_func: impl FnMut(&Fragment, &PhysicalRect) -> Option, + mut process_func: impl FnMut(&Fragment, usize, &PhysicalRect) -> Option, ) -> Option { self.root_fragments.iter().find_map(|child| { child .borrow() - .find(&self.initial_containing_block, &mut process_func) + .find(&self.initial_containing_block, 0, &mut process_func) }) } pub fn remove_nodes_in_fragment_tree_from_set(&self, set: &mut FxHashSet) { - self.find(|fragment, _| { + self.find(|fragment, _, _| { let (node, pseudo) = match fragment.tag()? { Tag::Node(node) => (node, None), Tag::BeforePseudo(node) => (node, Some(PseudoElement::Before)), @@ -461,7 +461,7 @@ impl FragmentTree { pub fn get_content_box_for_node(&self, requested_node: OpaqueNode) -> Rect { let mut bounding_box = PhysicalRect::zero(); let tag_to_find = Tag::Node(requested_node); - self.find(|fragment, containing_block| { + self.find(|fragment, _, containing_block| { if fragment.tag() != Some(tag_to_find) { return None::<()>; } @@ -497,7 +497,7 @@ impl FragmentTree { } pub fn get_border_dimensions_for_node(&self, requested_node: OpaqueNode) -> Rect { - self.find(|fragment, containing_block| { + self.find(|fragment, _, containing_block| { let (style, padding_rect) = match fragment { Fragment::Box(fragment) if fragment.tag.node() == requested_node => { (&fragment.style, fragment.padding_rect()) diff --git a/components/layout_2020/fragments.rs b/components/layout_2020/fragments.rs index f780ff50d58..73fa57be71e 100644 --- a/components/layout_2020/fragments.rs +++ b/components/layout_2020/fragments.rs @@ -227,9 +227,10 @@ impl Fragment { pub(crate) fn find( &self, containing_block: &PhysicalRect, - process_func: &mut impl FnMut(&Fragment, &PhysicalRect) -> Option, + level: usize, + process_func: &mut impl FnMut(&Fragment, usize, &PhysicalRect) -> Option, ) -> Option { - if let Some(result) = process_func(self, containing_block) { + if let Some(result) = process_func(self, level, containing_block) { return Some(result); } @@ -239,20 +240,22 @@ impl Fragment { .content_rect .to_physical(fragment.style.writing_mode, containing_block) .translate(containing_block.origin.to_vector()); - fragment - .children - .iter() - .find_map(|child| child.borrow().find(&new_containing_block, process_func)) + fragment.children.iter().find_map(|child| { + child + .borrow() + .find(&new_containing_block, level + 1, process_func) + }) }, Fragment::Anonymous(fragment) => { let new_containing_block = fragment .rect .to_physical(fragment.mode, containing_block) .translate(containing_block.origin.to_vector()); - fragment - .children - .iter() - .find_map(|child| child.borrow().find(&new_containing_block, process_func)) + fragment.children.iter().find_map(|child| { + child + .borrow() + .find(&new_containing_block, level + 1, process_func) + }) }, _ => None, } diff --git a/components/layout_2020/query.rs b/components/layout_2020/query.rs index 6df2e789e64..c0738ee01f5 100644 --- a/components/layout_2020/query.rs +++ b/components/layout_2020/query.rs @@ -299,7 +299,7 @@ pub fn process_resolved_style_request<'dom>( None => return computed_style(), }; fragment_tree - .find(|fragment, containing_block| { + .find(|fragment, _, containing_block| { let box_fragment = match fragment { Fragment::Box(ref box_fragment) if box_fragment.tag == tag_to_find => box_fragment, _ => return None,