Changeset 136938 in webkit


Ignore:
Timestamp:
Dec 7, 2012 1:56:44 AM (11 years ago)
Author:
Carlos Garcia Campos
Message:

Use always the order iterator from data member in RenderFlexibleBox
https://bugs.webkit.org/show_bug.cgi?id=104112

Reviewed by Tony Chang.

Some methods receive it as parameter and others use the data
member.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::layoutBlock):
(WebCore::RenderFlexibleBox::repositionLogicalHeightDependentFlexItems):
(WebCore::RenderFlexibleBox::layoutFlexItems):
(WebCore::RenderFlexibleBox::computeNextFlexLine):
(WebCore::RenderFlexibleBox::alignFlexLines):
(WebCore::RenderFlexibleBox::alignChildren):
(WebCore::RenderFlexibleBox::flipForRightToLeftColumn):
(WebCore::RenderFlexibleBox::flipForWrapReverse):

  • rendering/RenderFlexibleBox.h:
Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r136937 r136938  
     12012-12-06  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        Use always the order iterator from data member in RenderFlexibleBox
     4        https://bugs.webkit.org/show_bug.cgi?id=104112
     5
     6        Reviewed by Tony Chang.
     7
     8        Some methods receive it as parameter and others use the data
     9        member.
     10
     11        * rendering/RenderFlexibleBox.cpp:
     12        (WebCore::RenderFlexibleBox::layoutBlock):
     13        (WebCore::RenderFlexibleBox::repositionLogicalHeightDependentFlexItems):
     14        (WebCore::RenderFlexibleBox::layoutFlexItems):
     15        (WebCore::RenderFlexibleBox::computeNextFlexLine):
     16        (WebCore::RenderFlexibleBox::alignFlexLines):
     17        (WebCore::RenderFlexibleBox::alignChildren):
     18        (WebCore::RenderFlexibleBox::flipForRightToLeftColumn):
     19        (WebCore::RenderFlexibleBox::flipForWrapReverse):
     20        * rendering/RenderFlexibleBox.h:
     21
    1222012-12-07  Kent Tamura  <tkent@chromium.org>
    223
  • trunk/Source/WebCore/rendering/RenderFlexibleBox.cpp

    r136709 r136938  
    336336    ChildFrameRects oldChildRects;
    337337    appendChildFrameRects(oldChildRects);
    338     layoutFlexItems(*m_orderIterator, lineContexts);
     338    layoutFlexItems(lineContexts);
    339339
    340340    LayoutUnit oldClientAfterEdge = clientLogicalBottom();
    341341    updateLogicalHeight();
    342     repositionLogicalHeightDependentFlexItems(*m_orderIterator, lineContexts, oldClientAfterEdge);
     342    repositionLogicalHeightDependentFlexItems(lineContexts, oldClientAfterEdge);
    343343
    344344    RenderBlock::finishDelayUpdateScrollInfo();
     
    407407}
    408408
    409 void RenderFlexibleBox::repositionLogicalHeightDependentFlexItems(OrderIterator& iterator, Vector<LineContext>& lineContexts, LayoutUnit& oldClientAfterEdge)
     409void RenderFlexibleBox::repositionLogicalHeightDependentFlexItems(Vector<LineContext>& lineContexts, LayoutUnit& oldClientAfterEdge)
    410410{
    411411    LayoutUnit crossAxisStartEdge = lineContexts.isEmpty() ? LayoutUnit() : lineContexts[0].crossAxisOffset;
    412     alignFlexLines(iterator, lineContexts);
     412    alignFlexLines(lineContexts);
    413413
    414414    // If we have a single line flexbox, the line height is all the available space.
     
    416416    if (!isMultiline() && lineContexts.size() == 1)
    417417        lineContexts[0].crossAxisExtent = crossAxisContentExtent();
    418     alignChildren(iterator, lineContexts);
     418    alignChildren(lineContexts);
    419419
    420420    if (style()->flexWrap() == FlexWrapReverse) {
    421421        if (isHorizontalFlow())
    422422            oldClientAfterEdge = clientLogicalBottom();
    423         flipForWrapReverse(iterator, lineContexts, crossAxisStartEdge);
     423        flipForWrapReverse(lineContexts, crossAxisStartEdge);
    424424    }
    425425
    426426    // direction:rtl + flex-direction:column means the cross-axis direction is flipped.
    427     flipForRightToLeftColumn(iterator);
     427    flipForRightToLeftColumn();
    428428}
    429429
     
    724724}
    725725
    726 void RenderFlexibleBox::layoutFlexItems(OrderIterator& iterator, Vector<LineContext>& lineContexts)
    727 {
     726void RenderFlexibleBox::layoutFlexItems(Vector<LineContext>& lineContexts)
     727{
     728    ASSERT(m_orderIterator);
     729
    728730    OrderedFlexItemList orderedChildren;
    729731    LayoutUnit preferredMainAxisExtent;
     
    732734    LayoutUnit minMaxAppliedMainAxisExtent;
    733735
    734     iterator.first();
     736    m_orderIterator->first();
    735737    LayoutUnit crossAxisOffset = flowAwareBorderBefore() + flowAwarePaddingBefore();
    736     while (computeNextFlexLine(iterator, orderedChildren, preferredMainAxisExtent, totalFlexGrow, totalWeightedFlexShrink, minMaxAppliedMainAxisExtent)) {
     738    while (computeNextFlexLine(orderedChildren, preferredMainAxisExtent, totalFlexGrow, totalWeightedFlexShrink, minMaxAppliedMainAxisExtent)) {
    737739        LayoutUnit availableFreeSpace = mainAxisContentExtent(preferredMainAxisExtent) - preferredMainAxisExtent;
    738740        FlexSign flexSign = (minMaxAppliedMainAxisExtent < preferredMainAxisExtent + availableFreeSpace) ? PositiveFlexibility : NegativeFlexibility;
     
    913915}
    914916
    915 bool RenderFlexibleBox::computeNextFlexLine(OrderIterator& iterator, OrderedFlexItemList& orderedChildren, LayoutUnit& preferredMainAxisExtent, double& totalFlexGrow, double& totalWeightedFlexShrink, LayoutUnit& minMaxAppliedMainAxisExtent)
    916 {
     917bool RenderFlexibleBox::computeNextFlexLine(OrderedFlexItemList& orderedChildren, LayoutUnit& preferredMainAxisExtent, double& totalFlexGrow, double& totalWeightedFlexShrink, LayoutUnit& minMaxAppliedMainAxisExtent)
     918{
     919    ASSERT(m_orderIterator);
     920
    917921    orderedChildren.clear();
    918922    preferredMainAxisExtent = 0;
     
    920924    minMaxAppliedMainAxisExtent = 0;
    921925
    922     if (!iterator.currentChild())
     926    if (!m_orderIterator->currentChild())
    923927        return false;
    924928
     
    926930    bool lineHasInFlowItem = false;
    927931
    928     for (RenderBox* child = iterator.currentChild(); child; child = iterator.next()) {
     932    for (RenderBox* child = m_orderIterator->currentChild(); child; child = m_orderIterator->next()) {
    929933        if (child->isOutOfFlowPositioned()) {
    930934            orderedChildren.append(child);
     
    12421246}
    12431247
    1244 void RenderFlexibleBox::alignFlexLines(OrderIterator& iterator, Vector<LineContext>& lineContexts)
    1245 {
     1248void RenderFlexibleBox::alignFlexLines(Vector<LineContext>& lineContexts)
     1249{
     1250    ASSERT(m_orderIterator);
     1251
    12461252    if (!isMultiline() || style()->alignContent() == AlignContentFlexStart)
    12471253        return;
     
    12511257        availableCrossAxisSpace -= lineContexts[i].crossAxisExtent;
    12521258
    1253     RenderBox* child = iterator.first();
     1259    RenderBox* child = m_orderIterator->first();
    12541260    LayoutUnit lineOffset = initialAlignContentOffset(availableCrossAxisSpace, style()->alignContent(), lineContexts.size());
    12551261    for (unsigned lineNumber = 0; lineNumber < lineContexts.size(); ++lineNumber) {
    12561262        lineContexts[lineNumber].crossAxisOffset += lineOffset;
    1257         for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numberOfChildren; ++childNumber, child = iterator.next())
     1263        for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numberOfChildren; ++childNumber, child = m_orderIterator->next())
    12581264            adjustAlignmentForChild(child, lineOffset);
    12591265
     
    12801286}
    12811287
    1282 void RenderFlexibleBox::alignChildren(OrderIterator& iterator, const Vector<LineContext>& lineContexts)
    1283 {
     1288void RenderFlexibleBox::alignChildren(const Vector<LineContext>& lineContexts)
     1289{
     1290    ASSERT(m_orderIterator);
     1291
    12841292    // Keep track of the space between the baseline edge and the after edge of the box for each line.
    12851293    Vector<LayoutUnit> minMarginAfterBaselines;
    12861294
    1287     RenderBox* child = iterator.first();
     1295    RenderBox* child = m_orderIterator->first();
    12881296    for (size_t lineNumber = 0; lineNumber < lineContexts.size(); ++lineNumber) {
    12891297        LayoutUnit minMarginAfterBaseline = LayoutUnit::max();
     
    12911299        LayoutUnit maxAscent = lineContexts[lineNumber].maxAscent;
    12921300
    1293         for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numberOfChildren; ++childNumber, child = iterator.next()) {
     1301        for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numberOfChildren; ++childNumber, child = m_orderIterator->next()) {
    12941302            ASSERT(child);
    12951303            if (child->isOutOfFlowPositioned()) {
     
    13421350    // wrap-reverse flips the cross axis start and end. For baseline alignment, this means we
    13431351    // need to align the after edge of baseline elements with the after edge of the flex line.
    1344     child = iterator.first();
     1352    child = m_orderIterator->first();
    13451353    for (size_t lineNumber = 0; lineNumber < lineContexts.size(); ++lineNumber) {
    13461354        LayoutUnit minMarginAfterBaseline = minMarginAfterBaselines[lineNumber];
    1347         for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numberOfChildren; ++childNumber, child = iterator.next()) {
     1355        for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numberOfChildren; ++childNumber, child = m_orderIterator->next()) {
    13481356            ASSERT(child);
    13491357            if (alignmentForChild(child) == AlignBaseline && !hasAutoMarginsInCrossAxis(child) && minMarginAfterBaseline)
     
    13841392}
    13851393
    1386 void RenderFlexibleBox::flipForRightToLeftColumn(OrderIterator& iterator)
    1387 {
     1394void RenderFlexibleBox::flipForRightToLeftColumn()
     1395{
     1396    ASSERT(m_orderIterator);
     1397
    13881398    if (style()->isLeftToRightDirection() || !isColumnFlow())
    13891399        return;
    13901400
    13911401    LayoutUnit crossExtent = crossAxisExtent();
    1392     for (RenderBox* child = iterator.first(); child; child = iterator.next()) {
     1402    for (RenderBox* child = m_orderIterator->first(); child; child = m_orderIterator->next()) {
    13931403        if (child->isOutOfFlowPositioned())
    13941404            continue;
     
    13991409}
    14001410
    1401 void RenderFlexibleBox::flipForWrapReverse(OrderIterator& iterator, const Vector<LineContext>& lineContexts, LayoutUnit crossAxisStartEdge)
    1402 {
     1411void RenderFlexibleBox::flipForWrapReverse(const Vector<LineContext>& lineContexts, LayoutUnit crossAxisStartEdge)
     1412{
     1413    ASSERT(m_orderIterator);
     1414
    14031415    LayoutUnit contentExtent = crossAxisContentExtent();
    1404     RenderBox* child = iterator.first();
     1416    RenderBox* child = m_orderIterator->first();
    14051417    for (size_t lineNumber = 0; lineNumber < lineContexts.size(); ++lineNumber) {
    1406         for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numberOfChildren; ++childNumber, child = iterator.next()) {
     1418        for (size_t childNumber = 0; childNumber < lineContexts[lineNumber].numberOfChildren; ++childNumber, child = m_orderIterator->next()) {
    14071419            ASSERT(child);
    14081420            LayoutUnit lineCrossAxisExtent = lineContexts[lineNumber].crossAxisExtent;
  • trunk/Source/WebCore/rendering/RenderFlexibleBox.h

    r136709 r136938  
    119119    LayoutUnit preferredMainAxisContentExtentForChild(RenderBox* child);
    120120
    121     void layoutFlexItems(OrderIterator&, Vector<LineContext>&);
     121    void layoutFlexItems(Vector<LineContext>&);
    122122    LayoutUnit autoMarginOffsetInMainAxis(const OrderedFlexItemList&, LayoutUnit& availableFreeSpace);
    123123    void updateAutoMarginsInMainAxis(RenderBox* child, LayoutUnit autoMarginOffset);
    124124    bool hasAutoMarginsInCrossAxis(RenderBox* child) const;
    125125    bool updateAutoMarginsInCrossAxis(RenderBox* child, LayoutUnit availableAlignmentSpace);
    126     void repositionLogicalHeightDependentFlexItems(OrderIterator&, Vector<LineContext>&, LayoutUnit& oldClientAfterEdge);
     126    void repositionLogicalHeightDependentFlexItems(Vector<LineContext>&, LayoutUnit& oldClientAfterEdge);
    127127    void clearChildOverrideSizes();
    128128    void appendChildFrameRects(ChildFrameRects&);
     
    135135    void computeMainAxisPreferredSizes(bool relayoutChildren, OrderHashSet&);
    136136    LayoutUnit adjustChildSizeForMinAndMax(RenderBox*, LayoutUnit childSize);
    137     bool computeNextFlexLine(OrderIterator&, OrderedFlexItemList& orderedChildren, LayoutUnit& preferredMainAxisExtent, double& totalFlexGrow, double& totalWeightedFlexShrink, LayoutUnit& minMaxAppliedMainAxisExtent);
     137    bool computeNextFlexLine(OrderedFlexItemList& orderedChildren, LayoutUnit& preferredMainAxisExtent, double& totalFlexGrow, double& totalWeightedFlexShrink, LayoutUnit& minMaxAppliedMainAxisExtent);
    138138
    139139    bool resolveFlexibleLengths(FlexSign, const OrderedFlexItemList&, LayoutUnit& availableFreeSpace, double& totalFlexGrow, double& totalWeightedFlexShrink, InflexibleFlexItemSize&, Vector<LayoutUnit>& childSizes);
     
    147147    void layoutAndPlaceChildren(LayoutUnit& crossAxisOffset, const OrderedFlexItemList&, const Vector<LayoutUnit>& childSizes, LayoutUnit availableFreeSpace, Vector<LineContext>&);
    148148    void layoutColumnReverse(const OrderedFlexItemList&, LayoutUnit crossAxisOffset, LayoutUnit availableFreeSpace);
    149     void alignFlexLines(OrderIterator&, Vector<LineContext>&);
    150     void alignChildren(OrderIterator&, const Vector<LineContext>&);
     149    void alignFlexLines(Vector<LineContext>&);
     150    void alignChildren(const Vector<LineContext>&);
    151151    void applyStretchAlignmentToChild(RenderBox*, LayoutUnit lineCrossAxisExtent);
    152     void flipForRightToLeftColumn(OrderIterator&);
    153     void flipForWrapReverse(OrderIterator&, const Vector<LineContext>&, LayoutUnit crossAxisStartEdge);
     152    void flipForRightToLeftColumn();
     153    void flipForWrapReverse(const Vector<LineContext>&, LayoutUnit crossAxisStartEdge);
    154154
    155155    OwnPtr<OrderIterator> m_orderIterator;
Note: See TracChangeset for help on using the changeset viewer.