diff options
author | Martin Robinson <mrobinson@igalia.com> | 2025-05-02 14:20:11 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-02 12:20:11 +0000 |
commit | 9bc16482a391bfa2afa040071c9d943a1c84f426 (patch) | |
tree | 13bd3629057bdb5a686c230542f5211e7790e32b /python/tidy/servo_tidy_tests/test_ignored/whee/test.rs | |
parent | e25e63b5872d85931a1320609d46a4d404b57c65 (diff) | |
download | servo-main.tar.gz servo-main.zip |
`PositioningContext` held two vectors, one inside an `Option`, to
differentiate between the version used for a containing block for all
descendants (including `position: absolute` and `position: fixed`) or
only for `position: absolute` descendants. This distinction was really
hard to reason about and required a lot of bookkeeping about what kind
of `PositioningContext` a layout box's parent expected. In addition, it
led to a lot of mistakes.
This change simplifies things so that `PositioningContext` only holds a
single vector. When it comes time to lay out hoisted absolutely
positioned
fragments, the code then:
- lays out all of them (in the case of a `PositioningContext` for all
descendants), or
- only lays out the `position: absolute` descendants and preserves the
`position: fixed` descendants (in the case the `PositioningContext`
is only for `position: absolute`.), or
- lays out none of them if the `PositioningContext` was created for
box that did not establish a containing block for absolutes.
It's possible that this way of dealing with hoisted absolutes is a bit
less efficient, but, the number of these descendants is typically quite
small, so it should not be significant. In addition, this decreases the
size in memory of all `PositioningContexts` which are created in more
situations as time goes on.
Testing: There is a new WPT test with this change.
Fixes: #36696.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Diffstat (limited to 'python/tidy/servo_tidy_tests/test_ignored/whee/test.rs')
0 files changed, 0 insertions, 0 deletions