mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
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>
This commit is contained in:
parent
29e618dcf7
commit
0f61361e27
14 changed files with 123 additions and 142 deletions
|
@ -92,7 +92,7 @@ pub fn process_node_scroll_area_request(
|
|||
.first()
|
||||
.map(Fragment::scrolling_area)
|
||||
.unwrap_or_default(),
|
||||
None => tree.get_scrolling_area_for_viewport(),
|
||||
None => tree.scrollable_overflow(),
|
||||
};
|
||||
|
||||
Rect::new(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue