aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_2020/flow/inline/inline_box.rs
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2025-04-18 11:40:29 +0200
committerGitHub <noreply@github.com>2025-04-18 09:40:29 +0000
commit2ee8427665099987f715296d4d55b6388a480c08 (patch)
treea1c3595c8f6837abfcd01c729c2d8edcead26327 /components/layout_2020/flow/inline/inline_box.rs
parentfc201927ae5bdf26f842f9d4e6e52c2255adcde2 (diff)
downloadservo-2ee8427665099987f715296d4d55b6388a480c08.tar.gz
servo-2ee8427665099987f715296d4d55b6388a480c08.zip
layout: Store `Fragment` results in `LayoutBoxBase` and start using them for queries (#36583)
Start storing a link to laid-out `Fragment`s in `LayoutBoxBase`, so that these are accessible for queries and eventually for incremental layout. Some box tree data structures lacked a `LayoutBoxBase`, such as table tracks and table track groups[^1]. In addition, start using these `Fragment`s for queries instead of walking the entire `Fragment` tree. Currently, this isn't possible for most queries as `Fragment`s do not cache their absolute offsets (which are often necessary). This change uses the new box tree `Fragment`s for most resolved style queries. [^1]: Note that only rows and row groups store `Fragment`s as columsn and colgroups do not produce any. Testing: This is covered by existing tests. Fixes: This is part of #36525. Signed-off-by: Martin Robinson <mrobinson@igalia.com> Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Diffstat (limited to 'components/layout_2020/flow/inline/inline_box.rs')
-rw-r--r--components/layout_2020/flow/inline/inline_box.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/components/layout_2020/flow/inline/inline_box.rs b/components/layout_2020/flow/inline/inline_box.rs
index c14117b5651..2eceae944f2 100644
--- a/components/layout_2020/flow/inline/inline_box.rs
+++ b/components/layout_2020/flow/inline/inline_box.rs
@@ -73,6 +73,10 @@ impl InlineBoxes {
self.inline_boxes.len()
}
+ pub(super) fn iter(&self) -> impl Iterator<Item = &ArcRefCell<InlineBox>> {
+ self.inline_boxes.iter()
+ }
+
pub(super) fn get(&self, identifier: &InlineBoxIdentifier) -> ArcRefCell<InlineBox> {
self.inline_boxes[identifier.index_in_inline_boxes as usize].clone()
}