| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 2011 Apple Inc. All rights reserved. | 2  * Copyright (C) 2011 Apple Inc. All rights reserved. | 
| 3  * | 3  * | 
| 4  * Redistribution and use in source and binary forms, with or without | 4  * Redistribution and use in source and binary forms, with or without | 
| 5  * modification, are permitted provided that the following conditions | 5  * modification, are permitted provided that the following conditions | 
| 6  * are met: | 6  * are met: | 
| 7  * 1. Redistributions of source code must retain the above copyright | 7  * 1. Redistributions of source code must retain the above copyright | 
| 8  *    notice, this list of conditions and the following disclaimer. | 8  *    notice, this list of conditions and the following disclaimer. | 
| 9  * 2. Redistributions in binary form must reproduce the above copyright | 9  * 2. Redistributions in binary form must reproduce the above copyright | 
| 10  *    notice, this list of conditions and the following disclaimer in the | 10  *    notice, this list of conditions and the following disclaimer in the | 
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 197     } | 197     } | 
| 198 | 198 | 
| 199     RenderBox* newChildBox = toRenderBox(newChild); | 199     RenderBox* newChildBox = toRenderBox(newChild); | 
| 200     OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositionsFr
      omStyle(*style(), *newChildBox, ForRows); | 200     OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositionsFr
      omStyle(*style(), *newChildBox, ForRows); | 
| 201     OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosition
      sFromStyle(*style(), *newChildBox, ForColumns); | 201     OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosition
      sFromStyle(*style(), *newChildBox, ForColumns); | 
| 202     if (!rowPositions || !columnPositions) { | 202     if (!rowPositions || !columnPositions) { | 
| 203         // The new child requires the auto-placement algorithm to run so we need
       to recompute the grid fully. | 203         // The new child requires the auto-placement algorithm to run so we need
       to recompute the grid fully. | 
| 204         dirtyGrid(); | 204         dirtyGrid(); | 
| 205         return; | 205         return; | 
| 206     } else { | 206     } else { | 
| 207         // Ensure that the grid is big enough to contain new grid item. |  | 
| 208         if (gridRowCount() <= rowPositions->resolvedFinalPosition.toInt()) |  | 
| 209             growGrid(ForRows, rowPositions->resolvedFinalPosition.toInt()); |  | 
| 210         if (gridColumnCount() <= columnPositions->resolvedFinalPosition.toInt()) |  | 
| 211             growGrid(ForColumns, columnPositions->resolvedFinalPosition.toInt())
      ; |  | 
| 212 |  | 
| 213         insertItemIntoGrid(newChildBox, GridCoordinate(*rowPositions, *columnPos
      itions)); | 207         insertItemIntoGrid(newChildBox, GridCoordinate(*rowPositions, *columnPos
      itions)); | 
| 214         addChildToIndexesMap(newChildBox); | 208         addChildToIndexesMap(newChildBox); | 
| 215     } | 209     } | 
| 216 } | 210 } | 
| 217 | 211 | 
| 218 void RenderGrid::addChildToIndexesMap(RenderBox* child) | 212 void RenderGrid::addChildToIndexesMap(RenderBox* child) | 
| 219 { | 213 { | 
| 220     ASSERT(!m_gridItemsIndexesMap.contains(child)); | 214     ASSERT(!m_gridItemsIndexesMap.contains(child)); | 
| 221     RenderBox* sibling = child->nextSiblingBox(); | 215     RenderBox* sibling = child->nextSiblingBox(); | 
| 222     bool lastSibling = !sibling; | 216     bool lastSibling = !sibling; | 
| (...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 744         ASSERT(maximumPositionIndex >= gridRowCount()); | 738         ASSERT(maximumPositionIndex >= gridRowCount()); | 
| 745         const size_t oldRowSize = gridRowCount(); | 739         const size_t oldRowSize = gridRowCount(); | 
| 746         m_grid.grow(maximumPositionIndex + 1); | 740         m_grid.grow(maximumPositionIndex + 1); | 
| 747         for (size_t row = oldRowSize; row < gridRowCount(); ++row) | 741         for (size_t row = oldRowSize; row < gridRowCount(); ++row) | 
| 748             m_grid[row].grow(gridColumnCount()); | 742             m_grid[row].grow(gridColumnCount()); | 
| 749     } | 743     } | 
| 750 } | 744 } | 
| 751 | 745 | 
| 752 void RenderGrid::insertItemIntoGrid(RenderBox* child, const GridCoordinate& coor
      dinate) | 746 void RenderGrid::insertItemIntoGrid(RenderBox* child, const GridCoordinate& coor
      dinate) | 
| 753 { | 747 { | 
|  | 748     // Ensure that the grid is big enough to contain new grid item. | 
|  | 749     if (gridRowCount() <= coordinate.rows.resolvedFinalPosition.toInt()) | 
|  | 750         growGrid(ForRows, coordinate.rows.resolvedFinalPosition.toInt()); | 
|  | 751     if (gridColumnCount() <= coordinate.columns.resolvedFinalPosition.toInt()) | 
|  | 752         growGrid(ForColumns, coordinate.columns.resolvedFinalPosition.toInt()); | 
|  | 753 | 
| 754     for (GridSpan::iterator row = coordinate.rows.begin(); row != coordinate.row
      s.end(); ++row) { | 754     for (GridSpan::iterator row = coordinate.rows.begin(); row != coordinate.row
      s.end(); ++row) { | 
| 755         for (GridSpan::iterator column = coordinate.columns.begin(); column != c
      oordinate.columns.end(); ++column) | 755         for (GridSpan::iterator column = coordinate.columns.begin(); column != c
      oordinate.columns.end(); ++column) | 
| 756             m_grid[row.toInt()][column.toInt()].append(child); | 756             m_grid[row.toInt()][column.toInt()].append(child); | 
| 757     } | 757     } | 
| 758 | 758 | 
| 759     m_gridItemCoordinate.set(child, coordinate); | 759     m_gridItemCoordinate.set(child, coordinate); | 
| 760 } | 760 } | 
| 761 | 761 | 
| 762 void RenderGrid::insertItemIntoGrid(RenderBox* child, const GridResolvedPosition
      & rowTrack, const GridResolvedPosition& columnTrack) |  | 
| 763 { |  | 
| 764     const GridSpan& rowSpan = GridResolvedPosition::resolveGridPositionsFromAuto
      PlacementPosition(*child, ForRows, rowTrack); |  | 
| 765     const GridSpan& columnSpan = GridResolvedPosition::resolveGridPositionsFromA
      utoPlacementPosition(*child, ForColumns, columnTrack); |  | 
| 766     insertItemIntoGrid(child, GridCoordinate(rowSpan, columnSpan)); |  | 
| 767 } |  | 
| 768 |  | 
| 769 void RenderGrid::placeItemsOnGrid() | 762 void RenderGrid::placeItemsOnGrid() | 
| 770 { | 763 { | 
| 771     if (!gridIsDirty()) | 764     if (!gridIsDirty()) | 
| 772         return; | 765         return; | 
| 773 | 766 | 
| 774     ASSERT(m_gridItemCoordinate.isEmpty()); | 767     ASSERT(m_gridItemCoordinate.isEmpty()); | 
| 775 | 768 | 
| 776     populateExplicitGridAndOrderIterator(); | 769     populateExplicitGridAndOrderIterator(); | 
| 777 | 770 | 
| 778     // We clear the dirty bit here as the grid sizes have been updated, this mea
      ns | 771     // We clear the dirty bit here as the grid sizes have been updated, this mea
      ns | 
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 824     ASSERT(m_gridItemsIndexesMap.isEmpty()); | 817     ASSERT(m_gridItemsIndexesMap.isEmpty()); | 
| 825     size_t childIndex = 0; | 818     size_t childIndex = 0; | 
| 826     for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo
      x()) { | 819     for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo
      x()) { | 
| 827         populator.collectChild(child); | 820         populator.collectChild(child); | 
| 828         m_gridItemsIndexesMap.set(child, childIndex++); | 821         m_gridItemsIndexesMap.set(child, childIndex++); | 
| 829 | 822 | 
| 830         // This function bypasses the cache (cachedGridCoordinate()) as it is us
      ed to build it. | 823         // This function bypasses the cache (cachedGridCoordinate()) as it is us
      ed to build it. | 
| 831         OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositio
      nsFromStyle(*style(), *child, ForRows); | 824         OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositio
      nsFromStyle(*style(), *child, ForRows); | 
| 832         OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosi
      tionsFromStyle(*style(), *child, ForColumns); | 825         OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosi
      tionsFromStyle(*style(), *child, ForColumns); | 
| 833 | 826 | 
| 834         // |positions| is 0 if we need to run the auto-placement algorithm. Our 
      estimation ignores | 827         // |positions| is 0 if we need to run the auto-placement algorithm. | 
| 835         // this case as the auto-placement algorithm will grow the grid as neede
      d. | 828         if (rowPositions) { | 
| 836         if (rowPositions) |  | 
| 837             maximumRowIndex = std::max<size_t>(maximumRowIndex, rowPositions->re
      solvedFinalPosition.next().toInt()); | 829             maximumRowIndex = std::max<size_t>(maximumRowIndex, rowPositions->re
      solvedFinalPosition.next().toInt()); | 
| 838         if (columnPositions) | 830         } else { | 
|  | 831             // Grow the grid for items with a definite row span, getting the lar
      gest such span. | 
|  | 832             GridSpan positions = GridResolvedPosition::resolveGridPositionsFromA
      utoPlacementPosition(*style(), *child, ForRows, GridResolvedPosition(0)); | 
|  | 833             maximumRowIndex = std::max<size_t>(maximumRowIndex, positions.resolv
      edFinalPosition.next().toInt()); | 
|  | 834         } | 
|  | 835 | 
|  | 836         if (columnPositions) { | 
| 839             maximumColumnIndex = std::max<size_t>(maximumColumnIndex, columnPosi
      tions->resolvedFinalPosition.next().toInt()); | 837             maximumColumnIndex = std::max<size_t>(maximumColumnIndex, columnPosi
      tions->resolvedFinalPosition.next().toInt()); | 
|  | 838         } else { | 
|  | 839             // Grow the grid for items with a definite column span, getting the 
      largest such span. | 
|  | 840             GridSpan positions = GridResolvedPosition::resolveGridPositionsFromA
      utoPlacementPosition(*style(), *child, ForColumns, GridResolvedPosition(0)); | 
|  | 841             maximumColumnIndex = std::max<size_t>(maximumColumnIndex, positions.
      resolvedFinalPosition.next().toInt()); | 
|  | 842         } | 
| 840     } | 843     } | 
| 841 | 844 | 
| 842     m_grid.grow(maximumRowIndex); | 845     m_grid.grow(maximumRowIndex); | 
| 843     for (size_t i = 0; i < m_grid.size(); ++i) | 846     for (size_t i = 0; i < m_grid.size(); ++i) | 
| 844         m_grid[i].grow(maximumColumnIndex); | 847         m_grid[i].grow(maximumColumnIndex); | 
| 845 } | 848 } | 
| 846 | 849 | 
|  | 850 bool RenderGrid::checkEmptyCells(const GridCoordinate& coordinate) const | 
|  | 851 { | 
|  | 852     // Ignore cells outside current grid as we will grow it later if needed. | 
|  | 853     size_t maxRows = std::min(coordinate.rows.resolvedFinalPosition.next().toInt
      (), gridRowCount()); | 
|  | 854     size_t maxColumns = std::min(coordinate.columns.resolvedFinalPosition.next()
      .toInt(), gridColumnCount()); | 
|  | 855 | 
|  | 856     // This adds a O(N^2) behavior that shouldn't be a big deal as we expect spa
      nning areas to be small. | 
|  | 857     for (size_t row = coordinate.rows.resolvedInitialPosition.toInt(); row < max
      Rows; ++row) { | 
|  | 858         for (size_t column = coordinate.columns.resolvedInitialPosition.toInt();
       column < maxColumns; ++column) { | 
|  | 859             const GridCell& children = m_grid[row][column]; | 
|  | 860             if (!children.isEmpty()) | 
|  | 861                 return false; | 
|  | 862         } | 
|  | 863     } | 
|  | 864 | 
|  | 865     return true; | 
|  | 866 } | 
|  | 867 | 
|  | 868 PassOwnPtr<GridCoordinate> RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOu
      tsideGrid(const RenderBox* gridItem, GridTrackSizingDirection specifiedDirection
      , const GridSpan& specifiedPositions) const | 
|  | 869 { | 
|  | 870     GridTrackSizingDirection crossDirection = specifiedDirection == ForColumns ?
       ForRows : ForColumns; | 
|  | 871     const size_t endOfCrossDirection = crossDirection == ForColumns ? gridColumn
      Count() : gridRowCount(); | 
|  | 872     GridSpan crossDirectionPositions = GridResolvedPosition::resolveGridPosition
      sFromAutoPlacementPosition(*style(), *gridItem, crossDirection, GridResolvedPosi
      tion(endOfCrossDirection)); | 
|  | 873     return adoptPtr(new GridCoordinate(specifiedDirection == ForColumns ? crossD
      irectionPositions : specifiedPositions, specifiedDirection == ForColumns ? speci
      fiedPositions : crossDirectionPositions)); | 
|  | 874 } | 
|  | 875 | 
|  | 876 PassOwnPtr<GridCoordinate> RenderGrid::findEmptyGridAreaAtSpecifiedPositionsInsi
      deGrid(const RenderBox* gridItem, GridTrackSizingDirection specifiedDirection, c
      onst GridSpan& specifiedPositions) const | 
|  | 877 { | 
|  | 878     GridTrackSizingDirection crossDirection = specifiedDirection == ForColumns ?
       ForRows : ForColumns; | 
|  | 879 | 
|  | 880     GridIterator iterator(m_grid, specifiedDirection, specifiedPositions.resolve
      dInitialPosition.toInt()); | 
|  | 881     OwnPtr<GridCoordinate> emptyGridArea; | 
|  | 882     for (emptyGridArea = iterator.nextEmptyGridArea(); emptyGridArea; emptyGridA
      rea = iterator.nextEmptyGridArea()) { | 
|  | 883         GridResolvedPosition crossDirectionInitialPositionIndex = crossDirection
       == ForColumns ? emptyGridArea->columns.resolvedInitialPosition : emptyGridArea-
      >rows.resolvedInitialPosition; | 
|  | 884         GridSpan crossDirectionPositions = GridResolvedPosition::resolveGridPosi
      tionsFromAutoPlacementPosition(*style(), *gridItem, crossDirection, crossDirecti
      onInitialPositionIndex); | 
|  | 885 | 
|  | 886         emptyGridArea->rows = specifiedDirection == ForColumns ? crossDirectionP
      ositions : specifiedPositions; | 
|  | 887         emptyGridArea->columns = specifiedDirection == ForColumns ? specifiedPos
      itions : crossDirectionPositions; | 
|  | 888         if (checkEmptyCells(*emptyGridArea)) | 
|  | 889             break; | 
|  | 890     } | 
|  | 891 | 
|  | 892     return emptyGridArea.release(); | 
|  | 893 } | 
|  | 894 | 
| 847 void RenderGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<RenderBox*>& au
      toGridItems) | 895 void RenderGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<RenderBox*>& au
      toGridItems) | 
| 848 { | 896 { | 
| 849     for (size_t i = 0; i < autoGridItems.size(); ++i) { | 897     for (size_t i = 0; i < autoGridItems.size(); ++i) { | 
| 850         OwnPtr<GridSpan> majorAxisPositions = GridResolvedPosition::resolveGridP
      ositionsFromStyle(*style(), *autoGridItems[i], autoPlacementMajorAxisDirection()
      ); | 898         OwnPtr<GridSpan> majorAxisPositions = GridResolvedPosition::resolveGridP
      ositionsFromStyle(*style(), *autoGridItems[i], autoPlacementMajorAxisDirection()
      ); | 
| 851         GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), majorAx
      isPositions->resolvedInitialPosition.toInt()); | 899         OwnPtr<GridCoordinate> emptyGridArea = findEmptyGridAreaAtSpecifiedPosit
      ionsInsideGrid(autoGridItems[i], autoPlacementMajorAxisDirection(), *majorAxisPo
      sitions); | 
| 852         if (OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridArea())
       { | 900         if (!emptyGridArea) | 
| 853             insertItemIntoGrid(autoGridItems[i], emptyGridArea->rows.resolvedIni
      tialPosition, emptyGridArea->columns.resolvedInitialPosition); | 901             emptyGridArea = createEmptyGridAreaAtSpecifiedPositionsOutsideGrid(a
      utoGridItems[i], autoPlacementMajorAxisDirection(), *majorAxisPositions); | 
| 854             continue; | 902         insertItemIntoGrid(autoGridItems[i], *emptyGridArea); | 
| 855         } |  | 
| 856 |  | 
| 857         growGrid(autoPlacementMinorAxisDirection(), autoPlacementMinorAxisDirect
      ion() == ForColumns ? gridColumnCount() : gridRowCount()); |  | 
| 858         OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridArea(); |  | 
| 859         ASSERT(emptyGridArea); |  | 
| 860         insertItemIntoGrid(autoGridItems[i], emptyGridArea->rows.resolvedInitial
      Position, emptyGridArea->columns.resolvedInitialPosition); |  | 
| 861     } | 903     } | 
| 862 } | 904 } | 
| 863 | 905 | 
| 864 void RenderGrid::placeAutoMajorAxisItemsOnGrid(const Vector<RenderBox*>& autoGri
      dItems) | 906 void RenderGrid::placeAutoMajorAxisItemsOnGrid(const Vector<RenderBox*>& autoGri
      dItems) | 
| 865 { | 907 { | 
| 866     for (size_t i = 0; i < autoGridItems.size(); ++i) | 908     for (size_t i = 0; i < autoGridItems.size(); ++i) | 
| 867         placeAutoMajorAxisItemOnGrid(autoGridItems[i]); | 909         placeAutoMajorAxisItemOnGrid(autoGridItems[i]); | 
| 868 } | 910 } | 
| 869 | 911 | 
| 870 void RenderGrid::placeAutoMajorAxisItemOnGrid(RenderBox* gridItem) | 912 void RenderGrid::placeAutoMajorAxisItemOnGrid(RenderBox* gridItem) | 
| 871 { | 913 { | 
| 872     OwnPtr<GridSpan> minorAxisPositions = GridResolvedPosition::resolveGridPosit
      ionsFromStyle(*style(), *gridItem, autoPlacementMinorAxisDirection()); | 914     OwnPtr<GridSpan> minorAxisPositions = GridResolvedPosition::resolveGridPosit
      ionsFromStyle(*style(), *gridItem, autoPlacementMinorAxisDirection()); | 
| 873     ASSERT(!GridResolvedPosition::resolveGridPositionsFromStyle(*style(), *gridI
      tem, autoPlacementMajorAxisDirection())); | 915     ASSERT(!GridResolvedPosition::resolveGridPositionsFromStyle(*style(), *gridI
      tem, autoPlacementMajorAxisDirection())); | 
| 874     size_t minorAxisIndex = 0; | 916     OwnPtr<GridCoordinate> emptyGridArea; | 
| 875     if (minorAxisPositions) { | 917     if (minorAxisPositions) { | 
| 876         minorAxisIndex = minorAxisPositions->resolvedInitialPosition.toInt(); | 918         emptyGridArea = findEmptyGridAreaAtSpecifiedPositionsInsideGrid(gridItem
      , autoPlacementMinorAxisDirection(), *minorAxisPositions); | 
| 877         GridIterator iterator(m_grid, autoPlacementMinorAxisDirection(), minorAx
      isIndex); | 919         if (!emptyGridArea) | 
| 878         if (OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridArea())
       { | 920             emptyGridArea = createEmptyGridAreaAtSpecifiedPositionsOutsideGrid(g
      ridItem, autoPlacementMinorAxisDirection(), *minorAxisPositions); | 
| 879             insertItemIntoGrid(gridItem, emptyGridArea->rows.resolvedInitialPosi
      tion, emptyGridArea->columns.resolvedInitialPosition); |  | 
| 880             return; |  | 
| 881         } |  | 
| 882     } else { | 921     } else { | 
| 883         const size_t endOfMajorAxis = (autoPlacementMajorAxisDirection() == ForC
      olumns) ? gridColumnCount() : gridRowCount(); | 922         const size_t endOfMajorAxis = (autoPlacementMajorAxisDirection() == ForC
      olumns) ? gridColumnCount() : gridRowCount(); | 
| 884         for (size_t majorAxisIndex = 0; majorAxisIndex < endOfMajorAxis; ++major
      AxisIndex) { | 923         for (size_t majorAxisIndex = 0; majorAxisIndex < endOfMajorAxis; ++major
      AxisIndex) { | 
| 885             GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), maj
      orAxisIndex); | 924             // We need to resolve the position for every different index as the 
      number of cells might vary depending on it. | 
| 886             if (OwnPtr<GridCoordinate> emptyGridArea = iterator.nextEmptyGridAre
      a()) { | 925             // This will happen when we have "span <custom-indent>", which has a
       different resolution based on the position. | 
| 887                 insertItemIntoGrid(gridItem, emptyGridArea->rows.resolvedInitial
      Position, emptyGridArea->columns.resolvedInitialPosition); | 926             GridSpan majorAxisPositions = GridResolvedPosition::resolveGridPosit
      ionsFromAutoPlacementPosition(*style(), *gridItem, autoPlacementMajorAxisDirecti
      on(), majorAxisIndex); | 
| 888                 return; | 927             emptyGridArea = findEmptyGridAreaAtSpecifiedPositionsInsideGrid(grid
      Item, autoPlacementMajorAxisDirection(), majorAxisPositions); | 
|  | 928 | 
|  | 929             if (emptyGridArea) { | 
|  | 930                 // Check that it fits in the minor axis direction, as we shouldn
      't grow in that direction here (it was already managed in populateExplicitGridAn
      dOrderIterator()). | 
|  | 931                 GridResolvedPosition minorAxisFinalPositionIndex = autoPlacement
      MinorAxisDirection() == ForColumns ? emptyGridArea->columns.resolvedFinalPositio
      n : emptyGridArea->rows.resolvedFinalPosition; | 
|  | 932                 const size_t endOfMinorAxis = autoPlacementMinorAxisDirection() 
      == ForColumns ? gridColumnCount() : gridRowCount(); | 
|  | 933                 if (minorAxisFinalPositionIndex.toInt() < endOfMinorAxis) | 
|  | 934                     break; | 
| 889             } | 935             } | 
| 890         } | 936         } | 
|  | 937 | 
|  | 938         if (!emptyGridArea) { | 
|  | 939             GridSpan minorAxisPositions = GridResolvedPosition::resolveGridPosit
      ionsFromAutoPlacementPosition(*style(), *gridItem, autoPlacementMinorAxisDirecti
      on(), GridResolvedPosition(0)); | 
|  | 940             emptyGridArea = createEmptyGridAreaAtSpecifiedPositionsOutsideGrid(g
      ridItem, autoPlacementMinorAxisDirection(), minorAxisPositions); | 
|  | 941         } | 
| 891     } | 942     } | 
| 892 | 943 | 
| 893     // We didn't find an empty grid area so we need to create an extra major axi
      s line and insert our gridItem in it. | 944     insertItemIntoGrid(gridItem, *emptyGridArea); | 
| 894     const size_t columnIndex = (autoPlacementMajorAxisDirection() == ForColumns)
       ? gridColumnCount() : minorAxisIndex; |  | 
| 895     const size_t rowIndex = (autoPlacementMajorAxisDirection() == ForColumns) ? 
      minorAxisIndex : gridRowCount(); |  | 
| 896     growGrid(autoPlacementMajorAxisDirection(), autoPlacementMajorAxisDirection(
      ) == ForColumns ? gridColumnCount() : gridRowCount()); |  | 
| 897     insertItemIntoGrid(gridItem, rowIndex, columnIndex); |  | 
| 898 } | 945 } | 
| 899 | 946 | 
| 900 GridTrackSizingDirection RenderGrid::autoPlacementMajorAxisDirection() const | 947 GridTrackSizingDirection RenderGrid::autoPlacementMajorAxisDirection() const | 
| 901 { | 948 { | 
| 902     GridAutoFlow flow = style()->gridAutoFlow(); | 949     GridAutoFlow flow = style()->gridAutoFlow(); | 
| 903     ASSERT(flow != AutoFlowNone); | 950     ASSERT(flow != AutoFlowNone); | 
| 904     return (flow == AutoFlowColumn) ? ForColumns : ForRows; | 951     return (flow == AutoFlowColumn) ? ForColumns : ForRows; | 
| 905 } | 952 } | 
| 906 | 953 | 
| 907 GridTrackSizingDirection RenderGrid::autoPlacementMinorAxisDirection() const | 954 GridTrackSizingDirection RenderGrid::autoPlacementMinorAxisDirection() const | 
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1212     if (isOutOfFlowPositioned()) | 1259     if (isOutOfFlowPositioned()) | 
| 1213         return "RenderGrid (positioned)"; | 1260         return "RenderGrid (positioned)"; | 
| 1214     if (isAnonymous()) | 1261     if (isAnonymous()) | 
| 1215         return "RenderGrid (generated)"; | 1262         return "RenderGrid (generated)"; | 
| 1216     if (isRelPositioned()) | 1263     if (isRelPositioned()) | 
| 1217         return "RenderGrid (relative positioned)"; | 1264         return "RenderGrid (relative positioned)"; | 
| 1218     return "RenderGrid"; | 1265     return "RenderGrid"; | 
| 1219 } | 1266 } | 
| 1220 | 1267 | 
| 1221 } // namespace WebCore | 1268 } // namespace WebCore | 
| OLD | NEW | 
|---|