Files
ladybird/Tests/LibWeb/Layout/expected/input-placeholder.txt
Andreas Kling d17f666a8c LibWeb: Better CSS inheritance for nodes that represent a pseudo-element
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.
2025-10-21 16:42:00 +02:00

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)