⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 285860 in webkit


Ignore:
Timestamp:
Nov 16, 2021, 7:07:51 AM (5 years ago)
Author:
Alan Bujtas
Message:

[LFC][IFC] Fix fast/text/text-indent-inside-float.html
https://bugs.webkit.org/show_bug.cgi?id=233163

Reviewed by Antti Koivisto.

Percentages must be treated as 0 for the purpose of calculating intrinsic size contributions.
https://drafts.csswg.org/css-text/#text-indent-property

Note that this patch is in preparation for enabling IFC preferred width computation.

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::LineBuilder):
(WebCore::Layout::LineBuilder::initialConstraintsForLine const):

  • layout/formattingContexts/inline/InlineLineBuilder.h: Add an "intrinsic mode" which will also be used

for other, preferred width computation specific properties and values.

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r285858 r285860  
     12021-11-16  Alan Bujtas  <zalan@apple.com>
     2
     3        [LFC][IFC] Fix fast/text/text-indent-inside-float.html
     4        https://bugs.webkit.org/show_bug.cgi?id=233163
     5
     6        Reviewed by Antti Koivisto.
     7
     8        Percentages must be treated as 0 for the purpose of calculating intrinsic size contributions.
     9        https://drafts.csswg.org/css-text/#text-indent-property
     10
     11        Note that this patch is in preparation for enabling IFC preferred width computation.
     12
     13        * layout/formattingContexts/inline/InlineLineBuilder.cpp:
     14        (WebCore::Layout::LineBuilder::LineBuilder):
     15        (WebCore::Layout::LineBuilder::initialConstraintsForLine const):
     16        * layout/formattingContexts/inline/InlineLineBuilder.h: Add an "intrinsic mode" which will also be used
     17        for other, preferred width computation specific properties and values.
     18
    1192021-11-16  Chris Lord  <clord@igalia.com>
    220
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp

    r285806 r285860  
    269269}
    270270
    271 LineBuilder::LineBuilder(InlineFormattingContext& inlineFormattingContext, FloatingState& floatingState, HorizontalConstraints rootHorizontalConstraints, const InlineItems& inlineItems)
    272     : m_inlineFormattingContext(inlineFormattingContext)
     271LineBuilder::LineBuilder(InlineFormattingContext& inlineFormattingContext, FloatingState& floatingState, HorizontalConstraints rootHorizontalConstraints, const InlineItems& inlineItems, IsIntrinsicWidthMode isIntrinsicWidthMode)
     272    : m_isIntrinsicWidthMode(isIntrinsicWidthMode == IsIntrinsicWidthMode::Yes)
     273    , m_inlineFormattingContext(inlineFormattingContext)
    273274    , m_inlineFormattingState(&inlineFormattingContext.formattingState())
    274275    , m_floatingState(&floatingState)
     
    279280}
    280281
    281 LineBuilder::LineBuilder(const InlineFormattingContext& inlineFormattingContext, const InlineItems& inlineItems)
    282     : m_inlineFormattingContext(inlineFormattingContext)
     282LineBuilder::LineBuilder(const InlineFormattingContext& inlineFormattingContext, const InlineItems& inlineItems, IsIntrinsicWidthMode isIntrinsicWidthMode)
     283    : m_isIntrinsicWidthMode(isIntrinsicWidthMode == IsIntrinsicWidthMode::Yes)
     284    , m_inlineFormattingContext(inlineFormattingContext)
    283285    , m_line(inlineFormattingContext)
    284286    , m_inlineItems(inlineItems)
     
    548550        if (textIndent == RenderStyle::initialTextIndent())
    549551            return { };
     552        if (m_isIntrinsicWidthMode && textIndent.isPercent()) {
     553            // Percentages must be treated as 0 for the purpose of calculating intrinsic size contributions.
     554            // https://drafts.csswg.org/css-text/#text-indent-property
     555            return { };
     556        }
    550557        return { minimumValueForLength(textIndent, initialLineLogicalRect.width()) };
    551558    };
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h

    r285806 r285860  
    4040class LineBuilder {
    4141public:
    42     LineBuilder(InlineFormattingContext&, FloatingState&, HorizontalConstraints rootHorizontalConstraints, const InlineItems&);
    43     LineBuilder(const InlineFormattingContext&, const InlineItems&);
     42    enum class IsIntrinsicWidthMode { No, Yes };
     43    LineBuilder(InlineFormattingContext&, FloatingState&, HorizontalConstraints rootHorizontalConstraints, const InlineItems&, IsIntrinsicWidthMode = IsIntrinsicWidthMode::No);
     44    LineBuilder(const InlineFormattingContext&, const InlineItems&, IsIntrinsicWidthMode = IsIntrinsicWidthMode::Yes);
    4445
    4546    struct InlineItemRange {
     
    121122private:
    122123    bool m_isFirstLine { false };
     124    bool m_isIntrinsicWidthMode { false };
    123125    const InlineFormattingContext& m_inlineFormattingContext;
    124126    InlineFormattingState* m_inlineFormattingState { nullptr };
Note: See TracChangeset for help on using the changeset viewer.