Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ff75ee6b051e33feb8b8424647945cbb0151280b
      
https://github.com/WebKit/WebKit/commit/ff75ee6b051e33feb8b8424647945cbb0151280b
  Author: Alan Baradlay <[email protected]>
  Date:   2023-02-03 (Fri, 03 Feb 2023)

  Changed paths:
    A LayoutTests/fast/inline/text_overflow_ellipsis_simple-expected.html
    A LayoutTests/fast/inline/text_overflow_ellipsis_simple.html
    M 
Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLine.h
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp
    M Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h
    M Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayBox.h
    M 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp
    M 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.h
    M 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLine.h
    M 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.cpp
    M 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.h

  Log Message:
  -----------
  [RTL/bidi/vertical] Incorrect content truncation when "text-overflow" is 
"ellipsis"
https://bugs.webkit.org/show_bug.cgi?id=251608

Reviewed by Antti Koivisto.

In this patch inline content truncation (overflow: hidden + text-overflow: 
ellipsis) is moved from logical to visual space.
It ensures that the truncation happens _after_ bidi reordering and also _after_ 
applying writing-mode.

Now instead of running truncation as part of the trailing content handling in 
LineBuilder::close right after we figured the breaking position for
the inline content, we do it after constructing the display boxes (and the 
associated display line).

1. Remove truncation code from Line::Run and all the related code all the way 
to display line construction.
2. Introduce truncateOverflowingDisplayBoxes. It applies truncation on display 
box in visual order (the truncation logic is actually moved from Line::Run, 
nothing really new here).

* LayoutTests/fast/inline/text_overflow_ellipsis_simple-expected.html: Added.
* LayoutTests/fast/inline/text_overflow_ellipsis_simple.html: Added.
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:
(WebCore::Layout::lineEndingEllipsisPolicy):
(WebCore::Layout::InlineFormattingContext::lineLayout):
(WebCore::Layout::InlineFormattingContext::createDisplayContentForLine):
* Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.h:
* Source/WebCore/layout/formattingContexts/inline/InlineLine.cpp:
(WebCore::Layout::Line::initialize):
(WebCore::Layout::Line::Run::detachTrailingWhitespace):
(WebCore::Layout::Line::truncate): Deleted.
(WebCore::Layout::Line::Run::truncate): Deleted.
* Source/WebCore/layout/formattingContexts/inline/InlineLine.h:
(WebCore::Layout::Line::isContentTruncated const): Deleted.
(WebCore::Layout::Line::Run::isTruncated const): Deleted.
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp:
(WebCore::Layout::LineBuilder::layoutInlineContent):
(WebCore::Layout::LineBuilder::computedIntrinsicWidth):
(WebCore::Layout::LineBuilder::close):
* Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h:
* Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayBox.h:
(WebCore::InlineDisplay::Box::Text::setPartiallyVisibleContentLength):
(WebCore::InlineDisplay::Box::Box):
(WebCore::InlineDisplay::Box::setLeft):
(WebCore::InlineDisplay::Box::setIsFullyTruncated):
(WebCore::InlineDisplay::Box::Text::Text):
* 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:
(WebCore::Layout::InlineDisplayContentBuilder::appendTextDisplayBox):
(WebCore::Layout::InlineDisplayContentBuilder::appendAtomicInlineLevelDisplayBox):
(WebCore::Layout::InlineDisplayContentBuilder::appendInlineBoxDisplayBox):
(WebCore::Layout::InlineDisplayContentBuilder::appendSpanningInlineBoxDisplayBox):
* 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.h:
(WebCore::Layout::InlineDisplayContentBuilder::rootStyle const):
* Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLine.h:
(WebCore::InlineDisplay::Line::setEllipsisVisualRect):
(WebCore::InlineDisplay::Line::Line):
* 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.cpp:
(WebCore::Layout::flipLogicalLineRectToVisualForWritingMode):
(WebCore::Layout::InlineDisplayLineBuilder::build const):
(WebCore::Layout::truncateOverflowingDisplayBoxes):
(WebCore::Layout::InlineDisplayLineBuilder::trailingEllipsisVisualRect):
(WebCore::Layout::InlineDisplayLineBuilder::trailingEllipsisRect const): 
Deleted.
(WebCore::Layout::InlineDisplayLineBuilder::flipLogicalLineRectToVisualForWritingMode
 const): Deleted.
* 
Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.h:

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to