mirror of
https://github.com/servo/servo.git
synced 2025-08-16 02:45:36 +01:00
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>
This commit is contained in:
parent
fc201927ae
commit
2ee8427665
15 changed files with 387 additions and 222 deletions
|
@ -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()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue