Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: da42549d3773aa043610e1db4e578ef79dc716d5 https://github.com/WebKit/WebKit/commit/da42549d3773aa043610e1db4e578ef79dc716d5 Author: Alan Baradlay <za...@apple.com> Date: 2023-12-19 (Tue, 19 Dec 2023)
Changed paths: A LayoutTests/fast/flexbox/line-clamp-with-float-expected.html A LayoutTests/fast/flexbox/line-clamp-with-float.html M Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp M Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h M Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp M Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.h M Source/WebCore/layout/formattingContexts/inline/InlineLineTypes.h M Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.cpp M Source/WebCore/rendering/RenderBlockFlow.cpp M Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp Log Message: ----------- CSS line clamp together with float not working correctly https://bugs.webkit.org/show_bug.cgi?id=266018 <rdar://problem/119355692> Reviewed by Antti Koivisto. 1. Line clamping should ignore lines with no inline content. It usually happens when floats don't let us put content on the candidate line (see numberOfLinesWithInlineContent) 2. Move lineEndingEllipsisPolicy to InlineFormattingUtils and use numberOfLinesWithInlineContent as input to decide of the ellipsis policy 3. LineEndingEllipsisPolicy::No -> LineEndingEllipsisPolicy::NoEllipsis 4. While line-clamp state is valid across block container boundaries, we should not apply it on floats/out-of-flow content (i.e. do not count lines inside floats) 5. RenderDeprecatedFlexibleBox::applyModernLineClamp should only return null_opt when we couldn't manage to run line clamping at all. * LayoutTests/fast/flexbox/line-clamp-with-float-expected.html: Added. * LayoutTests/fast/flexbox/line-clamp-with-float.html: Added. * Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp: (WebCore::Layout::InlineFormattingContext::lineLayout): (WebCore::Layout::InlineFormattingContext::createDisplayContentForInlineContent): (WebCore::Layout::lineEndingEllipsisPolicy): Deleted. * Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h: * Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.cpp: (WebCore::Layout::InlineFormattingUtils::lineEndingEllipsisPolicy): * Source/WebCore/layout/formattingContexts/inline/InlineFormattingUtils.h: * Source/WebCore/layout/formattingContexts/inline/InlineLineTypes.h: * Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.cpp: (WebCore::Layout::InlineDisplayLineBuilder::trailingEllipsisVisualRectAfterTruncation): * Source/WebCore/rendering/RenderBlockFlow.cpp: (WebCore::RenderBlockFlow::layoutModernLines): * Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp: (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox): (WebCore::getHeightForLineCount): (WebCore::RenderDeprecatedFlexibleBox::applyModernLineClamp): Canonical link: https://commits.webkit.org/272278@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes