[webkit-changes] [WebKit/WebKit] ff75ee: [RTL/bidi/vertical] Incorrect content truncation w...
Alan Baradlay
noreply at github.com
Fri Feb 3 18:51:09 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ff75ee6b051e33feb8b8424647945cbb0151280b
https://github.com/WebKit/WebKit/commit/ff75ee6b051e33feb8b8424647945cbb0151280b
Author: Alan Baradlay <zalan at apple.com>
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
More information about the webkit-changes
mailing list