Skip to content

WebKit export of https://bugs.webkit.org/show_bug.cgi?id=321504 - #64179

Open
annevk wants to merge 1 commit into
web-platform-tests:masterfrom
annevk:wpt-export-for-webkit-321504
Open

annevk wants to merge 1 commit into
web-platform-tests:masterfrom
annevk:wpt-export-for-webkit-321504

Conversation

@annevk

@annevk annevk commented Oct 25, 2026

Copy link
Copy Markdown
Member

WebKit export from bug: [block-in-inline] A fieldset on a line takes its legend's overhang twice

[block-in-inline] A fieldset on a line takes its legend's overhang twice

A legend that reaches past its fieldset's border edge is carried as an intrinsic border, which
RenderBlock::borderBefore adds to the fieldset's border. The border box height the fieldset ends up with is
measured with that border in it, so RenderBox::contentBoxHeight has nothing left and clamps at zero.

updateLayoutBoxDimensions builds the geometry for a box on a line from both of those: the content box height from
the renderer, and the border from adjustBorderForTableAndFieldset, which adds the intrinsic border again. The
margin box the line gets is then max(0, H - BP) + BP, which is BP rather than H whenever the legend overhangs, so
the fieldset takes the overhang twice and its container grows by it.

The overhang belongs to the fieldset's own content: the lines inside it start below the legend. It says nothing
about the box a line holds, whose inner layout the render tree does. So take it where the fieldset is the
formatting context root and nowhere else, which leaves logicalBorder about a table's collapsed borders. The
content box size comes from what is left of the border box, since the renderer's own answer is measured against a
border that has the overhang in it. Only the fieldset's own block axis grew, which is the container's inline axis
when the two writing modes differ in orientation.

WebKit-Bug: https://bugs.webkit.org/show_bug.cgi?id=321504
WebKit-Canonical-Link: https://commits.webkit.org/319033@main

A legend that reaches past its fieldset's border edge is carried as an intrinsic border, which
RenderBlock::borderBefore adds to the fieldset's border. The border box height the fieldset ends up with is
measured with that border in it, so RenderBox::contentBoxHeight has nothing left and clamps at zero.

updateLayoutBoxDimensions builds the geometry for a box on a line from both of those: the content box height from
the renderer, and the border from adjustBorderForTableAndFieldset, which adds the intrinsic border again. The
margin box the line gets is then max(0, H - BP) + BP, which is BP rather than H whenever the legend overhangs, so
the fieldset takes the overhang twice and its container grows by it.

The overhang belongs to the fieldset's own content: the lines inside it start below the legend. It says nothing
about the box a line holds, whose inner layout the render tree does. So take it where the fieldset is the
formatting context root and nowhere else, which leaves logicalBorder about a table's collapsed borders. The
content box size comes from what is left of the border box, since the renderer's own answer is measured against a
border that has the overhang in it. Only the fieldset's own block axis grew, which is the container's inline axis
when the two writing modes differ in orientation.

WebKit-Bug: https://bugs.webkit.org/show_bug.cgi?id=321504
WebKit-Canonical-Link: https://commits.webkit.org/319033@main

@wpt-pr-bot wpt-pr-bot left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The review process for this patch is being conducted in the WebKit project.

@annevk
annevk enabled auto-merge (rebase) October 25, 2026 08:55

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants