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

Changeset 232152 in webkit


Ignore:
Timestamp:
May 24, 2018, 8:01:11 AM (8 years ago)
Author:
Alan Bujtas
Message:

[LFC] Implement FormattingContext::placeInFlowPositionedChildren
​https://bugs.webkit.org/show_bug.cgi?id=185934

Reviewed by Antti Koivisto.

  • layout/FormattingContext.cpp:

(WebCore::Layout::FormattingContext::computeInFlowPositionedPosition const):
(WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const):

  • layout/FormattingContext.h:
  • layout/blockformatting/BlockFormattingContext.cpp:

(WebCore::Layout::BlockFormattingContext::layout const):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r232148 r232152  
     12018-05-24  Zalan Bujtas  <zalan@apple.com>
     2
     3        [LFC] Implement FormattingContext::placeInFlowPositionedChildren
     4        https://bugs.webkit.org/show_bug.cgi?id=185934
     5
     6        Reviewed by Antti Koivisto.
     7
     8        * layout/FormattingContext.cpp:
     9        (WebCore::Layout::FormattingContext::computeInFlowPositionedPosition const):
     10        (WebCore::Layout::FormattingContext::placeInFlowPositionedChildren const):
     11        * layout/FormattingContext.h:
     12        * layout/blockformatting/BlockFormattingContext.cpp:
     13        (WebCore::Layout::BlockFormattingContext::layout const):
     14
    1152018-05-23  Joseph Pecoraro  <pecoraro@apple.com>
    216
  • trunk/Source/WebCore/layout/FormattingContext.cpp

    r232114 r232152  
    5454}
    5555
    56 void FormattingContext::computeInFlowPositionedPosition(const Box&, Display::Box&) const
     56void FormattingContext::computeInFlowPositionedPosition(LayoutContext&, const Box&, Display::Box&) const
    5757{
    5858}
    … …  
    156156}
    157157
    158 void FormattingContext::placeInFlowPositionedChildren(const Container&) const
    159 {
     158void FormattingContext::placeInFlowPositionedChildren(LayoutContext& layoutContext, const Container& container) const
     159{
     160    // If this container also establishes a formatting context, then positioning already has happend in that the formatting context.
     161    if (container.establishesFormattingContext() && &container != &root())
     162        return;
     163
     164    for (auto& layoutBox : childrenOfType<Box>(container)) {
     165        if (!layoutBox.isInFlowPositioned())
     166            continue;
     167        computeInFlowPositionedPosition(layoutContext, layoutBox, *layoutContext.displayBoxForLayoutBox(layoutBox));
     168    }
    160169}
    161170
  • trunk/Source/WebCore/layout/FormattingContext.h

    r232114 r232152  
    6868
    6969    virtual void computeStaticPosition(LayoutContext&, const Box&, Display::Box&) const;
    70     virtual void computeInFlowPositionedPosition(const Box&, Display::Box&) const;
     70    virtual void computeInFlowPositionedPosition(LayoutContext&, const Box&, Display::Box&) const;
    7171    virtual void computeOutOfFlowPosition(LayoutContext&, const Box&, Display::Box&) const;
    7272
    … …  
    8787    virtual LayoutUnit marginRight(const Box&) const;
    8888
    89     void placeInFlowPositionedChildren(const Container&) const;
     89    void placeInFlowPositionedChildren(LayoutContext&, const Container&) const;
    9090    void layoutOutOfFlowDescendants(LayoutContext&s) const;
    9191
  • trunk/Source/WebCore/layout/blockformatting/BlockFormattingContext.cpp

    r232114 r232152  
    102102            auto& container = downcast<Container>(layoutBox);
    103103            // Move in-flow positioned children to their final position.
    104             placeInFlowPositionedChildren(container);
     104            placeInFlowPositionedChildren(layoutContext, container);
    105105            if (auto* nextSibling = container.nextInFlowOrFloatingSibling()) {
    106106                layoutQueue.append(std::make_unique<LayoutPair>(LayoutPair {*nextSibling, layoutContext.createDisplayBox(*nextSibling)}));
    … …  
    110110    }
    111111    // Place the inflow positioned children.
    112     placeInFlowPositionedChildren(formattingRoot);
     112    placeInFlowPositionedChildren(layoutContext, formattingRoot);
    113113    // And take care of out-of-flow boxes as the final step.
    114114    layoutOutOfFlowDescendants(layoutContext);
Note: See TracChangeset for help on using the changeset viewer.