mirror of
https://github.com/servo/servo.git
synced 2025-08-07 06:25:32 +01:00
layout: Share styles to inline box children via SharedInlineStyles
(#36896)
`TextRun`s use their parent style to render. Previously, these styles were cloned and stored directly in the box tree `TextRun` and resulting `TextFragment`s. This presents a problem for incremental layout. Wrapping the style in another layer of shared ownership and mutability will allow updating all `TextFragment`s during repaint-only incremental layout by simply updating the box tree styles of the original text parents. This adds a new set of borrows when accessing text styles, but also makes it so that during box tree block construction `InlineFormattingContext`s are created lazily and now `InlineFormattingContextBuilder::finish` consumes the builder, making the API make a bit more sense. This should also improve performance of box tree block construction slightly. Testing: This should not change observable behavior and thus is covered by existing WPT tests. Signed-off-by: Martin Robinson <mrobinson@igalia.com> Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
db83601b62
commit
a0dd2c1beb
24 changed files with 369 additions and 187 deletions
13
tests/wpt/meta/MANIFEST.json
vendored
13
tests/wpt/meta/MANIFEST.json
vendored
|
@ -167223,6 +167223,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"display-contents-inline-002.html": [
|
||||
"f40a34129f348aca37fca83f70598053cf22785b",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-display/display-contents-pass-no-red-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"display-contents-inline-flex-001.html": [
|
||||
"43b502731aefbaa348671e32171f0e1eb4bca04b",
|
||||
[
|
||||
|
|
18
tests/wpt/tests/css/css-display/display-contents-inline-002.html
vendored
Normal file
18
tests/wpt/tests/css/css-display/display-contents-inline-002.html
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Display: display:contents in inline layout should affect style of descendants</title>
|
||||
<link rel="author" title="Martin Robinson" href="mailto:mrobinson@igalia.com">
|
||||
<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-display-3/#valdef-display-contents">
|
||||
<link rel="match" href="display-contents-pass-no-red-ref.html">
|
||||
<style>
|
||||
#contents {
|
||||
display: contents;
|
||||
color: black;
|
||||
}
|
||||
.red { color: red; }
|
||||
</style>
|
||||
<p>You should see the word PASS and no red below.</p>
|
||||
<span>
|
||||
P<span class="red"><div id="contents">AS</div></span>S
|
||||
</span>
|
Loading…
Add table
Add a link
Reference in a new issue