Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: a54db1a4a770a13884c51c007184ca40cefee334
https://github.com/WebKit/WebKit/commit/a54db1a4a770a13884c51c007184ca40cefee334
Author: Alan Baradlay <[email protected]>
Date: 2025-11-05 (Wed, 05 Nov 2025)
Changed paths:
A LayoutTests/fast/inline/blocks-in-inline-layout2-expected.html
A LayoutTests/fast/inline/blocks-in-inline-layout2.html
M
Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineLine.h
M Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp
M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h
M Source/WebCore/layout/formattingContexts/inline/LineLayoutResult.h
M Source/WebCore/layout/formattingContexts/inline/RangeBasedLineBuilder.cpp
M
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp
Log Message:
-----------
[blocks-in-inline] Block level elements need special handling in LineBuilder
https://bugs.webkit.org/show_bug.cgi?id=301897
Reviewed by Antti Koivisto.
This change ensures that we break both before and after each block level
element.
1. 'candidate content' now has a block field (similar to floats) and whenever
LineBuilder sees a block as candidate content, it either
- closes the current line if there's any content processed already
- or when the line is empty, adds puts the block on the line and closes it.
(i.e. we don't rely on InlineContentBreaker anymore to break after block as it
overflows -see test case)
2. Line has appendBlock function now where we simply append the incoming block
item to the run list.
Test: fast/inline/blocks-in-inline-layout2.html
* LayoutTests/fast/inline/blocks-in-inline-layout2-expected.html: Added.
* LayoutTests/fast/inline/blocks-in-inline-layout2.html: Added.
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::createDisplayContentForLineFromCachedContent):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp:
(WebCore::Layout::InlineFormattingUtils::logicalTopForNextLine const):
(WebCore::Layout::InlineFormattingUtils::nextWrapOpportunity const):
* Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp:
(WebCore::Layout::Line::appendText):
(WebCore::Layout::Line::appendBlock):
* Source/WebCore/layout/formattingContexts/inline/InlineLine.h:
* Source/WebCore/layout/formattingContexts/inline/InlineLineBoxBuilder.cpp:
(WebCore::Layout::LineBoxBuilder::constructInlineLevelBoxes):
(WebCore::Layout::LineBoxBuilder::adjustInlineBoxHeightsForLineBoxContainIfApplicable):
(WebCore::Layout::LineBoxBuilder::computeLineBoxGeometry const):
(WebCore::Layout::LineBoxBuilder::adjustOutsideListMarkersPosition):
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::hasTrailingSoftWrapOpportunity):
(WebCore::Layout::LineCandidate::InlineContent::appendInlineItem):
(WebCore::Layout::LineCandidate::reset):
(WebCore::Layout::LineBuilder::placeInlineAndFloatContent):
(WebCore::Layout::LineBuilder::candidateContentForLine):
(WebCore::Layout::LineBuilder::handleBlockContent):
(WebCore::Layout::LineBuilder::commitCandidateContent):
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h:
* Source/WebCore/layout/formattingContexts/inline/LineLayoutResult.h:
* Source/WebCore/layout/formattingContexts/inline/RangeBasedLineBuilder.cpp:
(WebCore::Layout::RangeBasedLineBuilder::layoutInlineContent):
*
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::build):
(WebCore::Layout::InlineDisplayContentBuilder::processNonBidiContent):
(WebCore::Layout::InlineDisplayContentBuilder::processBidiContent):
(WebCore::Layout::InlineDisplayContentBuilder::processRubyContent):
Canonical link: https://commits.webkit.org/302592@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications