servo/components/layout_2020
Martin Robinson 2ee8427665
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>
2025-04-18 09:40:29 +00:00
..
display_list Cleanup after #36461 (#36472) 2025-04-11 16:35:21 +00:00
flexbox layout: Store Fragment results in LayoutBoxBase and start using them for queries (#36583) 2025-04-18 09:40:29 +00:00
flow layout: Store Fragment results in LayoutBoxBase and start using them for queries (#36583) 2025-04-18 09:40:29 +00:00
fragment_tree layout: Box block_margins_collapsed_with_children member of BoxFragment (#36474) 2025-04-12 08:52:30 +00:00
table layout: Store Fragment results in LayoutBoxBase and start using them for queries (#36583) 2025-04-18 09:40:29 +00:00
taffy layout: Store Fragment results in LayoutBoxBase and start using them for queries (#36583) 2025-04-18 09:40:29 +00:00
tests layout: Store table parts in DOM layout data (#36447) 2025-04-12 14:13:23 +00:00
Cargo.toml refactor: use is_zero() instead of comparing with Au::Zero() (#36347) 2025-04-09 22:57:55 +00:00
cell.rs layout: Store table parts in DOM layout data (#36447) 2025-04-12 14:13:23 +00:00
construct_modern.rs layout: Simplify and generalize the usage of pseudo-elements (#36202) 2025-03-29 12:41:04 +00:00
context.rs layout: Scale images in image_set by their specified resolution (#36374) 2025-04-07 13:54:29 +00:00
dom.rs layout: Store Fragment results in LayoutBoxBase and start using them for queries (#36583) 2025-04-18 09:40:29 +00:00
dom_traversal.rs Cleanup after #36461 (#36472) 2025-04-11 16:35:21 +00:00
formatting_contexts.rs layout: Add a LayoutBoxBase to inline boxes (#36513) 2025-04-14 16:02:37 +00:00
geom.rs layout: Enforce min-content min main size of flex-level tables (#36469) 2025-04-12 14:22:37 +00:00
layout_box_base.rs layout: Store Fragment results in LayoutBoxBase and start using them for queries (#36583) 2025-04-18 09:40:29 +00:00
lib.rs layout: Store table parts in DOM layout data (#36447) 2025-04-12 14:13:23 +00:00
lists.rs layout: Add initial support for the ::marker pseudo-element (#36317) 2025-04-07 17:49:05 +00:00
positioned.rs layout: Store Fragment results in LayoutBoxBase and start using them for queries (#36583) 2025-04-18 09:40:29 +00:00
query.rs layout: Store Fragment results in LayoutBoxBase and start using them for queries (#36583) 2025-04-18 09:40:29 +00:00
quotes.rs layout: Implement a non-recursive version of CSS quotes (#34770) 2025-02-27 16:00:21 +00:00
replaced.rs constellation: Stop assuming that the viewport is shared by all WebViews (#36312) 2025-04-04 17:06:34 +00:00
sizing.rs layout: Always floor the max-content size by the min-content size (#36571) 2025-04-17 15:36:05 +00:00
style_ext.rs layout: Restrict stretch alignment to flex items with computed auto size (#36288) 2025-04-04 10:15:40 +00:00
traversal.rs Update rustfmt to the 2024 style edition (#35764) 2025-03-03 11:26:53 +00:00