servo/components/layout
Martin Robinson 0f61361e27
layout: Unify scrollable overflow calculation and include position: absolute (#37475)
Previously, layout was handling scrollable overflow and srolling area
calculation separately, only excluding the "unreachable scrollable
overflow region" at the last step. In addition, `position: absolute` was
not included in scrollable overflow calculation.

This change combines the two concepts into a single scrollable overflow
calculation and starts taking into account `position: absolute`.
Finally, `BoxFragment::scrollable_overflow_for_parent` is converted to
use early returns which reduces the amount of indentation.

Fixes #35928.
Fixes #37204.
Testing: This causes some WPT test to pass, but also two to start
failing:
- `/css/css-masking/clip-path/clip-path-fixed-scroll.html`: This seems
to fail
because script is scrolling past the boundaries of the document. This is
a
failure that was uncovered by the fixed element now being added to the
   page's scroll area.
- `/css/css-overflow/overflow-outside-padding.html`: One test has
started to fail
here because now the absolutely positioned element is included in the
scroll area,
and I think there is an issue with how we are placing RTL items with
negative margins.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-06-16 11:30:31 +00:00
..
display_list layout: Unify scrollable overflow calculation and include position: absolute (#37475) 2025-06-16 11:30:31 +00:00
flexbox layout: Move text decoration propagation to stacking context tree construction (#37069) 2025-05-21 16:38:29 +00:00
flow Layout: refactor the box tree update logic for better readability (#37390) 2025-06-13 08:42:59 +00:00
fragment_tree layout: Unify scrollable overflow calculation and include position: absolute (#37475) 2025-06-16 11:30:31 +00:00
stylesheets Add a user agent style for the <slot> element (#37174) 2025-05-29 08:20:01 +00:00
table layout: Move text decoration propagation to stacking context tree construction (#37069) 2025-05-21 16:38:29 +00:00
taffy CSS Grid: percentage sizing fixes (#34948) 2025-06-08 15:17:10 +00:00
tests layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
Cargo.toml Removing unused dependencies in crates. (#37096) 2025-05-23 12:58:00 +00:00
cell.rs layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
construct_modern.rs Move to_bidi_level method from Stylo to Servo (#37343) 2025-06-11 14:44:13 +00:00
context.rs Add support for static SVG images using resvg crate (#36721) 2025-05-27 11:02:40 +00:00
dom.rs Add support for static SVG images using resvg crate (#36721) 2025-05-27 11:02:40 +00:00
dom_traversal.rs Revert "Implement Input UA Shadow DOM (#37065)" (#37296) 2025-06-06 15:23:08 +00:00
formatting_contexts.rs layout: Correct damage propagation and style repair for repaint-only layout (#37004) 2025-05-19 10:17:49 +00:00
geom.rs layout: Inform child layout about final block size (#36980) 2025-05-14 20:35:49 +00:00
layout_box_base.rs layout: Add a repaint-only incremental layout mode (#36978) 2025-05-12 17:03:50 +00:00
layout_impl.rs layout: Store scroll offsets in the ScrollTree (#37428) 2025-06-13 12:01:27 +00:00
lib.rs layout: Move text decoration propagation to stacking context tree construction (#37069) 2025-05-21 16:38:29 +00:00
lists.rs layout: Use ServoLayoutNode directly instead of a generic impl (#36876) 2025-05-06 14:27:51 +00:00
positioned.rs layout: Split overflow calculation after fragment tree construction (#37203) 2025-05-30 19:41:05 +00:00
query.rs layout: Unify scrollable overflow calculation and include position: absolute (#37475) 2025-06-16 11:30:31 +00:00
quotes.rs layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
replaced.rs layout: Ensure that min/max-content sizes ignore sizing properties (#37464) 2025-06-15 16:11:18 +00:00
sizing.rs layout: Combine layout_2020 and layout_thread_2020 into a crate called layout (#36613) 2025-04-19 10:17:03 +00:00
style_ext.rs Move to_bidi_level method from Stylo to Servo (#37343) 2025-06-11 14:44:13 +00:00
traversal.rs Add another incremental layout that starts at stacking tree construction (#37088) 2025-05-23 23:40:02 +00:00