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

Changeset 285806 in webkit


Ignore:
Timestamp:
Nov 15, 2021, 6:47:03 AM (5 years ago)
Author:
Alan Bujtas
Message:

[LFC][IFC] Take text-indent into account when computing preferred width
https://bugs.webkit.org/show_bug.cgi?id=233115

Reviewed by Antti Koivisto.

  • layout/formattingContexts/inline/InlineFormattingContext.cpp:

(WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):

  • layout/formattingContexts/inline/InlineLineBuilder.cpp:

(WebCore::Layout::LineBuilder::computedIntrinsicWidth):

  • layout/formattingContexts/inline/InlineLineBuilder.h:
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r285802 r285806  
     12021-11-15  Alan Bujtas  <zalan@apple.com>
     2
     3        [LFC][IFC] Take text-indent into account when computing preferred width
     4        https://bugs.webkit.org/show_bug.cgi?id=233115
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * layout/formattingContexts/inline/InlineFormattingContext.cpp:
     9        (WebCore::Layout::InlineFormattingContext::computedIntrinsicWidthForConstraint const):
     10        * layout/formattingContexts/inline/InlineLineBuilder.cpp:
     11        (WebCore::Layout::LineBuilder::computedIntrinsicWidth):
     12        * layout/formattingContexts/inline/InlineLineBuilder.h:
     13
    1142021-11-15  Enrique Ocaña González  <eocanha@igalia.com>
    215
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp

    r285162 r285806  
    423423    auto maximumLineWidth = InlineLayoutUnit { };
    424424    auto maximumFloatWidth = LayoutUnit { };
     425    auto isFirstLine = true;
    425426    while (!layoutRange.isEmpty()) {
    426         auto intrinsicContent = lineBuilder.computedIntrinsicWidth(layoutRange, availableWidth);
     427        auto intrinsicContent = lineBuilder.computedIntrinsicWidth(layoutRange, availableWidth, isFirstLine);
    427428        layoutRange.start = intrinsicContent.inlineItemRange.end;
    428429        maximumLineWidth = std::max(maximumLineWidth, intrinsicContent.logicalWidth);
     430        isFirstLine = false;
    429431        // FIXME: Add support for clear.
    430432        for (auto* floatBox : intrinsicContent.floats)
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.cpp

    r285629 r285806  
    324324}
    325325
    326 LineBuilder::IntrinsicContent LineBuilder::computedIntrinsicWidth(const InlineItemRange& needsLayoutRange, InlineLayoutUnit availableWidth)
    327 {
    328     initialize({ { { }, { availableWidth, maxInlineLayoutUnit() } }, false }, false, { }, { }, { });
     326LineBuilder::IntrinsicContent LineBuilder::computedIntrinsicWidth(const InlineItemRange& needsLayoutRange, InlineLayoutUnit availableWidth, bool isFirstLine)
     327{
     328    auto lineConstraints = initialConstraintsForLine({ 0, 0, availableWidth, 0 }, isFirstLine);
     329    initialize(lineConstraints, isFirstLine, needsLayoutRange.start, { }, { });
     330
    329331    auto committedContent = placeInlineContent(needsLayoutRange);
    330332    auto committedRange = close(needsLayoutRange, committedContent);
    331     return { committedRange, m_line.contentLogicalWidth(), m_floats };
     333    auto lineWidth = lineConstraints.logicalRect.left() + m_line.contentLogicalWidth();
     334    return { committedRange, lineWidth, m_floats };
    332335}
    333336
  • trunk/Source/WebCore/layout/formattingContexts/inline/InlineLineBuilder.h

    r285157 r285806  
    7272        const FloatList& floats;
    7373    };
    74     IntrinsicContent computedIntrinsicWidth(const InlineItemRange&, InlineLayoutUnit availableWidth);
     74    IntrinsicContent computedIntrinsicWidth(const InlineItemRange&, InlineLayoutUnit availableWidth, bool isFirstLine);
    7575
    7676private:
Note: See TracChangeset for help on using the changeset viewer.