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