Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 4e88d3e73dff505ed6f3e9607b5c956c8e535626
https://github.com/WebKit/WebKit/commit/4e88d3e73dff505ed6f3e9607b5c956c8e535626
Author: Alan Baradlay <[email protected]>
Date: 2026-08-10 (Mon, 10 Aug 2026)
Changed paths:
A
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filtered-inline-is-container-with-block-content-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filtered-inline-is-container-with-block-content-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filtered-inline-is-container-with-block-content.html
M Source/WebCore/rendering/RenderBox.cpp
M Source/WebCore/rendering/RenderInline.cpp
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayoutState.cpp
Log Message:
-----------
[block-in-inline] Only a relatively positioned inline offsets its out-of-flow
children by the position of its line
https://bugs.webkit.org/show_bug.cgi?id=321397
Reviewed by Antti Koivisto.
An out-of-flow box whose containing block is an inline box is laid out against
the nearest non-anonymous
block, so the distance from that block to the inline's own first fragment has
to be added back.
RenderInline::offsetForInFlowPositionedInline is what returns it, taking the
inline box's logicalTop, and
all four of its callers ask for it only when the inline is in-flow positioned.
An inline is the containing
block for other reasons too, a filter among them, and in those cases the offset
was dropped.
An anonymous block around the inline hid this. The wrapper is a RenderBox, so
its own topLeftLocationOffset
carries the distance up the box chain in offsetFromContainer, and the inline
sits at the top of the
wrapper's first line, which leaves the half-leading at most to add. With a
block level box on a line there
is no wrapper: the inline's parent is the container itself, a RenderInline
contributes no location offset
of its own, and the whole distance down to the line is left to
offsetForInFlowPositionedInline.
Ask whether the inline is the containing block rather than whether it is
in-flow positioned. For a
RenderInline canContainAbsolutelyPositionedObjects covers the fixed position
case as well, since the
willChange term of each only applies to a RenderBlock, leaving
mayContainOutOfFlowPositionedObjects and a
non-static position.
*
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filtered-inline-is-container-with-block-content.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filtered-inline-is-container-with-block-content-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/filtered-inline-is-container-with-block-content-expected.html:
Added.
* Source/WebCore/rendering/RenderBox.cpp:
(WebCore::RenderBox::offsetFromContainer):
(WebCore::RenderBox::computeVisibleRectsInContainer):
* Source/WebCore/rendering/RenderInline.cpp:
(WebCore::RenderInline::offsetForInFlowPositionedInline):
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateLayerPosition):
* Source/WebCore/rendering/RenderLayoutState.cpp:
(WebCore::RenderLayoutState::computeOffsets):
Canonical link: https://commits.webkit.org/318897@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications