mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 17:55:07 +02:00
When we compute style for elements inside a UA-internal shadow tree that represent a pseudo-element (e.g ::placeholder), we actually run the StyleComputer machinery for (host element :: pseudo-element). While that lets us match the correct selectors, it was incorrectly applying CSS inheritance, since we'd also then inherit from whatever was above the host element in the tree. This patch fixes the issue by introducing an inheritance override in AbstractElement and then using that to force inheritance from whatever is actually directly above in the DOM for these elements instead of jumping all the way up past the host. This fixes an issue where `text-align: center` on input type=text elements would render the main text centered but placeholder text was still left-aligned.
76 lines
5.1 KiB
Plaintext
76 lines
5.1 KiB
Plaintext
Viewport <#document> at [0,0] [0+0+0 800 0+0+0] [0+0+0 600 0+0+0] children: not-inline
|
|
BlockContainer <html> at [0,0] [0+0+0 800 0+0+0] [0+0+0 70 0+0+0] [BFC] children: not-inline
|
|
BlockContainer <body> at [8,8] [8+0+0 784 0+0+8] [8+0+0 54 0+0+8] children: inline
|
|
frag 0 from BlockContainer start: 0, length: 0, rect: [9,9 200x25] baseline: 18.5
|
|
frag 1 from TextNode start: 0, length: 1, rect: [210,9 10x23] baseline: 17.5
|
|
" "
|
|
frag 2 from BlockContainer start: 0, length: 0, rect: [221,9 200x25] baseline: 18.5
|
|
frag 3 from TextNode start: 0, length: 1, rect: [422,9 10x23] baseline: 17.5
|
|
" "
|
|
frag 4 from BlockContainer start: 0, length: 0, rect: [433,9 200x25] baseline: 18.5
|
|
frag 5 from BlockContainer start: 0, length: 0, rect: [9,36 200x25] baseline: 18.5
|
|
BlockContainer <input> at [9,9] inline-block [0+1+0 200 0+1+0] [0+1+0 25 0+1+0] [BFC] children: not-inline
|
|
Box <div> at [11,10] flex-container(row) [0+0+2 196 2+0+0] [0+0+1 23 1+0+0] [FFC] children: not-inline
|
|
BlockContainer <div> at [11,10] flex-item [0+0+0 196 0+0+0] [0+0+0 23 0+0+0] [BFC] children: inline
|
|
frag 0 from TextNode start: 0, length: 4, rect: [11,10 40.1875x23] baseline: 17.5
|
|
"text"
|
|
TextNode <#text> (not painted)
|
|
TextNode <#text> (not painted)
|
|
BlockContainer <input> at [221,9] inline-block [0+1+0 200 0+1+0] [0+1+0 25 0+1+0] [BFC] children: not-inline
|
|
Box <div> at [223,10] flex-container(row) [0+0+2 196 2+0+0] [0+0+1 23 1+0+0] [FFC] children: not-inline
|
|
BlockContainer <div> at [223,10] flex-item [0+0+0 0 0+0+0] [0+0+0 23 0+0+0] [BFC] children: inline
|
|
frag 0 from TextNode start: 0, length: 0, rect: [223,10 0x23] baseline: 17.5
|
|
TextNode <#text> (not painted)
|
|
BlockContainer <div> at [223,10] flex-item [0+0+0 196 0+0+0] [0+0+0 23 0+0+0] [BFC] children: inline
|
|
frag 0 from TextNode start: 0, length: 34, rect: [223,10 344.546875x23] baseline: 17.5
|
|
"This placeholder should be visible"
|
|
TextNode <#text> (not painted)
|
|
TextNode <#text> (not painted)
|
|
BlockContainer <input> at [433,9] inline-block [0+1+0 200 0+1+0] [0+1+0 25 0+1+0] [BFC] children: not-inline
|
|
Box <div> at [435,10] flex-container(row) [0+0+2 196 2+0+0] [0+0+1 23 1+0+0] [FFC] children: not-inline
|
|
BlockContainer <div> at [435,10] flex-item [0+0+0 196 0+0+0] [0+0+0 23 0+0+0] [BFC] children: inline
|
|
frag 0 from TextNode start: 0, length: 4, rect: [435,10 40.1875x23] baseline: 17.5
|
|
"text"
|
|
TextNode <#text> (not painted)
|
|
TextNode <#text> (not painted)
|
|
BlockContainer <input#placeholder> at [9,36] inline-block [0+1+0 200 0+1+0] [0+1+0 25 0+1+0] [BFC] children: not-inline
|
|
Box <div> at [11,37] flex-container(row) [0+0+2 196 2+0+0] [0+0+1 23 1+0+0] [FFC] children: not-inline
|
|
BlockContainer <div> at [11,37] flex-item [0+0+0 0 0+0+0] [0+0+0 23 0+0+0] [BFC] children: inline
|
|
frag 0 from TextNode start: 0, length: 0, rect: [11,37 0x23] baseline: 17.5
|
|
TextNode <#text> (not painted)
|
|
BlockContainer <div> at [11,37] flex-item [0+0+0 196 0+0+0] [0+0+0 23 0+0+0] [BFC] children: inline
|
|
frag 0 from TextNode start: 0, length: 39, rect: [11,37 396.171875x23] baseline: 17.5
|
|
"This placeholder should also be visible"
|
|
TextNode <#text> (not painted)
|
|
TextNode <#text> (not painted)
|
|
TextNode <#text> (not painted)
|
|
|
|
ViewportPaintable (Viewport<#document>) [0,0 800x600]
|
|
PaintableWithLines (BlockContainer<HTML>) [0,0 800x70]
|
|
PaintableWithLines (BlockContainer<BODY>) [8,8 784x54]
|
|
PaintableWithLines (BlockContainer<INPUT>) [8,8 202x27]
|
|
PaintableBox (Box<DIV>) [9,9 200x25]
|
|
PaintableWithLines (BlockContainer<DIV>) [11,10 196x23]
|
|
TextPaintable (TextNode<#text>)
|
|
TextPaintable (TextNode<#text>)
|
|
PaintableWithLines (BlockContainer<INPUT>) [220,8 202x27] overflow: [221,9 346.546875x26]
|
|
PaintableBox (Box<DIV>) [221,9 200x25] overflow: [221,9 346.546875x26]
|
|
PaintableWithLines (BlockContainer<DIV>) [223,10 0x23]
|
|
TextPaintable (TextNode<#text>)
|
|
PaintableWithLines (BlockContainer<DIV>) [223,10 196x23] overflow: [223,10 344.546875x23]
|
|
TextPaintable (TextNode<#text>)
|
|
TextPaintable (TextNode<#text>)
|
|
PaintableWithLines (BlockContainer<INPUT>) [432,8 202x27]
|
|
PaintableBox (Box<DIV>) [433,9 200x25]
|
|
PaintableWithLines (BlockContainer<DIV>) [435,10 196x23]
|
|
TextPaintable (TextNode<#text>)
|
|
PaintableWithLines (BlockContainer<INPUT>#placeholder) [8,35 202x27] overflow: [9,36 398.171875x26]
|
|
PaintableBox (Box<DIV>) [9,36 200x25] overflow: [9,36 398.171875x26]
|
|
PaintableWithLines (BlockContainer<DIV>) [11,37 0x23]
|
|
TextPaintable (TextNode<#text>)
|
|
PaintableWithLines (BlockContainer<DIV>) [11,37 196x23] overflow: [11,37 396.171875x23]
|
|
TextPaintable (TextNode<#text>)
|
|
|
|
SC for Viewport<#document> [0,0 800x600] [children: 1] (z-index: auto)
|
|
SC for BlockContainer<HTML> [0,0 800x70] [children: 0] (z-index: auto)
|