servo/components/layout/flow
Martin Robinson b63a1818c4
layout: Implement node geometry queries against BoxTree's Fragment (#36663)
This is a followup to #36629, continuing to implement script-based
layout queries  using the `Fragment`s attached to the `BoxTree`. In this
change, geometry queris (apart from parent offset) are calculated using
`Fragment`s hanging of the `BoxTree`.

In order to make this work, all `Fragment`s for inlines split by blocks,
need to be accessible in the `BoxTree`. This required some changes to
the way that box tree items were stored in DOM `BoxSlot`s. Now every
inline level item can have more than a single `BoxTree` item. These are
carefully collected by the `InlineFormattingContextBuilder` -- currently
a bit fragile, but with more documentation.

Testing: There are tests for these changes.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2025-04-25 13:38:05 +00:00
..
inline layout: Implement node geometry queries against BoxTree's Fragment (#36663) 2025-04-25 13:38:05 +00:00
construct.rs layout: Implement node geometry queries against BoxTree's Fragment (#36663) 2025-04-25 13:38:05 +00:00
float.rs layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
mod.rs layout: Implement justify-self for block-level boxes (#36595) 2025-04-25 12:22:22 +00:00
root.rs layout: Implement node geometry queries against BoxTree's Fragment (#36663) 2025-04-25 13:38:05 +00:00