Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8ea2903a98c446cbbef057f1d9d5344b093f8096
      
https://github.com/WebKit/WebKit/commit/8ea2903a98c446cbbef057f1d9d5344b093f8096
  Author: Alan Baradlay <[email protected]>
  Date:   2024-12-06 (Fri, 06 Dec 2024)

  Changed paths:
    M LayoutTests/fast/block/line-clamp-collapse-nested-blocks-expected.html
    M 
LayoutTests/fast/inline/dynamic-line-clamp-change-on-nested-content-expected.html
    A LayoutTests/fast/overflow/line-clamp-on-last-formatted-line-expected.html
    A LayoutTests/fast/overflow/line-clamp-on-last-formatted-line.html
    M 
Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp
    M Source/WebCore/layout/formattingContexts/inline/RangeBasedLineBuilder.cpp
    M 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.cpp
    M 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.h
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp
    M Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h
    M Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp

  Log Message:
  -----------
  webkit-line-clamp in nested context does not render ellipsis when inline 
content fits.
https://bugs.webkit.org/show_bug.cgi?id=281136
<rdar://problem/137585973>

Reviewed by Antti Koivisto.

We fail to put ellipsis on the clamped line when it is the last formatted line 
followed by
a sibling IFC with more inline content.
e.g.
<div clamp=1>
 <div>Last formatted line in this IFC but not in the parent BFC. Needs 
ellipsis.</div>
 <div>this line is clamped</div>
</div>

^ in this case ellipsis should go to the end of "last formatted line", even 
though it does
not overflow the container in block direction, but it is considered 
"overflowing" the parent BFC.

In this change, we start putting ellipsis on such last formatted lines and if 
they turn out to be truly the last line in the clamp context (where we should 
NOT put ellipsis) we simply remove the ellipsis by running a no-clamp layout.
<div clamp=1>
 <div>Last formatted line in this IFC and in the parent BFC as well. No 
ellipsis here.</div>
</div>

* LayoutTests/fast/block/line-clamp-collapse-nested-blocks-expected.html:
* 
LayoutTests/fast/inline/dynamic-line-clamp-change-on-nested-content-expected.html:
* LayoutTests/fast/overflow/line-clamp-on-last-formatted-line-expected.html: 
Added.
* LayoutTests/fast/overflow/line-clamp-on-last-formatted-line.html: Added.
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::InlineFormattingContext::createDisplayContentForInlineContent):
* Source/WebCore/layout/formattingContexts/inline/RangeBasedLineBuilder.cpp:
(WebCore::Layout::RangeBasedLineBuilder::isEligibleForRangeInlineLayout):
* 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.cpp:
(WebCore::Layout::trailingEllipsisVisualRectAfterTruncation):
(WebCore::Layout::InlineDisplayLineBuilder::addLegacyLineClampTrailingLinkBoxIfApplicable):
(WebCore::Layout::InlineDisplayLineBuilder::applyEllipsisIfNeeded):
* 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.h:
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.cpp:
(WebCore::LayoutIntegration::LineLayout::hasEllipsisInBlockDirectionOnLastFormattedLine
 const):
* Source/WebCore/layout/integration/inline/LayoutIntegrationLineLayout.h:
* Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp:
(WebCore::blockContainerForLastFormattedLine):
(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):

Canonical link: https://commits.webkit.org/287441@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to