mirror of
https://github.com/servo/servo.git
synced 2025-09-27 23:30:08 +01:00
layout: Use overflow: visible
if overflow
was propagated to viewport (#38598)
The `overflow-*` values of either the root element or the `<body>` get propagated to the viewport. However, we were missing this part: > The element from which the value is propagated must then have a used `overflow` value of `visible`. See https://drafts.csswg.org/css-overflow/#overflow-propagation Testing: - `css/cssom-view/scrolling-quirks-vs-nonquirks.html` - `css/css-overflow/overflow-body-propagation-007.html` - `css/css-overflow/overflow-body-propagation-008.html` - `css/css-overflow/overflow-body-propagation-009.html` - `css/css-overflow/scrollable-overflow-with-nested-elements-001.html` - `css/css-overflow/scrollable-overflow-with-nested-elements-002.html` - `css/css-overflow/scrollable-overflow-with-nested-elements-003.html` - `css/css-overflow/scrollable-overflow-with-nested-elements-004.html` - `css/css-overflow/scrollbar-gutter-scroll-into-view.html` Failures: - `css/css-overflow/overflow-body-propagation-010.html` Failing because of missing support for `contain: paint`. - `css/css-overflow/scrollable-overflow-with-nested-elements-005.html` Failing because of wrong `data-expected-height`, but correct `data-expected-scroll-height` which is core of this PR. `data-expected-height` can be dealt separately. Fixes: #38248 --------- Signed-off-by: Shubham Gupta <shubham13297@gmail.com> Signed-off-by: Oriol Brufau <obrufau@igalia.com> Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
37088aa4c3
commit
d8ff9c7a08
22 changed files with 373 additions and 72 deletions
|
@ -598,6 +598,15 @@ impl ComputedValuesExt for ComputedValues {
|
|||
let mut overflow_x = style_box.overflow_x;
|
||||
let mut overflow_y = style_box.overflow_y;
|
||||
|
||||
// https://www.w3.org/TR/css-overflow-3/#overflow-propagation
|
||||
// The element from which the value is propagated must then have a used overflow value of visible.
|
||||
if fragment_flags.contains(FragmentFlags::PROPAGATED_OVERFLOW_TO_VIEWPORT) {
|
||||
return AxesOverflow {
|
||||
x: Overflow::Visible,
|
||||
y: Overflow::Visible,
|
||||
};
|
||||
}
|
||||
|
||||
// From <https://www.w3.org/TR/css-overflow-4/#overflow-control>:
|
||||
// "On replaced elements, the used values of all computed values other than visible is clip."
|
||||
if fragment_flags.contains(FragmentFlags::IS_REPLACED) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue