Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Side by Side Diff: Source/core/rendering/RenderGrid.cpp

Issue 235663004: [CSS Grid Layout] Add GridSpan::iterator (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: New patch Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 225
226 if (style()->gridAutoFlow() != AutoFlowNone) { 226 if (style()->gridAutoFlow() != AutoFlowNone) {
227 // The grid needs to be recomputed as it might contain auto-placed items that will change their position. 227 // The grid needs to be recomputed as it might contain auto-placed items that will change their position.
228 dirtyGrid(); 228 dirtyGrid();
229 return; 229 return;
230 } 230 }
231 231
232 const RenderBox* childBox = toRenderBox(child); 232 const RenderBox* childBox = toRenderBox(child);
233 GridCoordinate coordinate = m_gridItemCoordinate.take(childBox); 233 GridCoordinate coordinate = m_gridItemCoordinate.take(childBox);
234 234
235 for (GridResolvedPosition row = coordinate.rows.resolvedInitialPosition; row <= coordinate.rows.resolvedFinalPosition; ++row) { 235 for (GridSpan::iterator row = coordinate.rows.begin(); row != coordinate.row s.end(); ++row) {
236 for (GridResolvedPosition column = coordinate.columns.resolvedInitialPos ition; column <= coordinate.columns.resolvedFinalPosition; ++column) { 236 for (GridSpan::iterator column = coordinate.columns.begin(); column != c oordinate.columns.end(); ++column) {
237 GridCell& cell = m_grid[row.toInt()][column.toInt()]; 237 GridCell& cell = m_grid[row.toInt()][column.toInt()];
238 cell.remove(cell.find(childBox)); 238 cell.remove(cell.find(childBox));
239 } 239 }
240 } 240 }
241 } 241 }
242 242
243 void RenderGrid::styleDidChange(StyleDifference diff, const RenderStyle* oldStyl e) 243 void RenderGrid::styleDidChange(StyleDifference diff, const RenderStyle* oldStyl e)
244 { 244 {
245 RenderBlock::styleDidChange(diff, oldStyle); 245 RenderBlock::styleDidChange(diff, oldStyle);
246 if (!oldStyle) 246 if (!oldStyle)
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 static bool sortByGridNormalizedFlexValue(const GridTrackForNormalization& track 1, const GridTrackForNormalization& track2) 493 static bool sortByGridNormalizedFlexValue(const GridTrackForNormalization& track 1, const GridTrackForNormalization& track2)
494 { 494 {
495 return track1.m_normalizedFlexValue < track2.m_normalizedFlexValue; 495 return track1.m_normalizedFlexValue < track2.m_normalizedFlexValue;
496 } 496 }
497 497
498 double RenderGrid::computeNormalizedFractionBreadth(Vector<GridTrack>& tracks, c onst GridSpan& tracksSpan, GridTrackSizingDirection direction, LayoutUnit availa bleLogicalSpace) const 498 double RenderGrid::computeNormalizedFractionBreadth(Vector<GridTrack>& tracks, c onst GridSpan& tracksSpan, GridTrackSizingDirection direction, LayoutUnit availa bleLogicalSpace) const
499 { 499 {
500 // |availableLogicalSpace| already accounts for the used breadths so no need to remove it here. 500 // |availableLogicalSpace| already accounts for the used breadths so no need to remove it here.
501 501
502 Vector<GridTrackForNormalization> tracksForNormalization; 502 Vector<GridTrackForNormalization> tracksForNormalization;
503 for (GridResolvedPosition resolvedPosition = tracksSpan.resolvedInitialPosit ion; resolvedPosition <= tracksSpan.resolvedFinalPosition; ++resolvedPosition) { 503 for (GridSpan::iterator resolvedPosition = tracksSpan.begin(); resolvedPosit ion != tracksSpan.end(); ++resolvedPosition) {
504 const GridTrackSize& trackSize = gridTrackSize(direction, resolvedPositi on.toInt()); 504 const GridTrackSize& trackSize = gridTrackSize(direction, resolvedPositi on.toInt());
505 if (!trackSize.maxTrackBreadth().isFlex()) 505 if (!trackSize.maxTrackBreadth().isFlex())
506 continue; 506 continue;
507 507
508 tracksForNormalization.append(GridTrackForNormalization(tracks[resolvedP osition.toInt()], trackSize.maxTrackBreadth().flex())); 508 tracksForNormalization.append(GridTrackForNormalization(tracks[resolvedP osition.toInt()], trackSize.maxTrackBreadth().flex()));
509 } 509 }
510 510
511 // The function is not called if we don't have <flex> grid tracks 511 // The function is not called if we don't have <flex> grid tracks
512 ASSERT(!tracksForNormalization.isEmpty()); 512 ASSERT(!tracksForNormalization.isEmpty());
513 513
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 ASSERT(maximumPositionIndex >= m_grid.size()); 720 ASSERT(maximumPositionIndex >= m_grid.size());
721 const size_t oldRowSize = m_grid.size(); 721 const size_t oldRowSize = m_grid.size();
722 m_grid.grow(maximumPositionIndex + 1); 722 m_grid.grow(maximumPositionIndex + 1);
723 for (size_t row = oldRowSize; row < m_grid.size(); ++row) 723 for (size_t row = oldRowSize; row < m_grid.size(); ++row)
724 m_grid[row].grow(m_grid[0].size()); 724 m_grid[row].grow(m_grid[0].size());
725 } 725 }
726 } 726 }
727 727
728 void RenderGrid::insertItemIntoGrid(RenderBox* child, const GridCoordinate& coor dinate) 728 void RenderGrid::insertItemIntoGrid(RenderBox* child, const GridCoordinate& coor dinate)
729 { 729 {
730 for (GridResolvedPosition row = coordinate.rows.resolvedInitialPosition; row <= coordinate.rows.resolvedFinalPosition; ++row) { 730 for (GridSpan::iterator row = coordinate.rows.begin(); row != coordinate.row s.end(); ++row) {
731 for (GridResolvedPosition column = coordinate.columns.resolvedInitialPos ition; column <= coordinate.columns.resolvedFinalPosition; ++column) 731 for (GridSpan::iterator column = coordinate.columns.begin(); column != c oordinate.columns.end(); ++column)
732 m_grid[row.toInt()][column.toInt()].append(child); 732 m_grid[row.toInt()][column.toInt()].append(child);
733 } 733 }
734 734
735 m_gridItemCoordinate.set(child, coordinate); 735 m_gridItemCoordinate.set(child, coordinate);
736 } 736 }
737 737
738 void RenderGrid::insertItemIntoGrid(RenderBox* child, const GridResolvedPosition & rowTrack, const GridResolvedPosition& columnTrack) 738 void RenderGrid::insertItemIntoGrid(RenderBox* child, const GridResolvedPosition & rowTrack, const GridResolvedPosition& columnTrack)
739 { 739 {
740 const GridSpan& rowSpan = GridResolvedPosition::resolveGridPositionsFromAuto PlacementPosition(*child, ForRows, rowTrack); 740 const GridSpan& rowSpan = GridResolvedPosition::resolveGridPositionsFromAuto PlacementPosition(*child, ForRows, rowTrack);
741 const GridSpan& columnSpan = GridResolvedPosition::resolveGridPositionsFromA utoPlacementPosition(*child, ForColumns, columnTrack); 741 const GridSpan& columnSpan = GridResolvedPosition::resolveGridPositionsFromA utoPlacementPosition(*child, ForColumns, columnTrack);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo x()) { 800 for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo x()) {
801 populator.collectChild(child); 801 populator.collectChild(child);
802 802
803 // This function bypasses the cache (cachedGridCoordinate()) as it is us ed to build it. 803 // This function bypasses the cache (cachedGridCoordinate()) as it is us ed to build it.
804 OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositio nsFromStyle(*style(), *child, ForRows); 804 OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositio nsFromStyle(*style(), *child, ForRows);
805 OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosi tionsFromStyle(*style(), *child, ForColumns); 805 OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosi tionsFromStyle(*style(), *child, ForColumns);
806 806
807 // |positions| is 0 if we need to run the auto-placement algorithm. Our estimation ignores 807 // |positions| is 0 if we need to run the auto-placement algorithm. Our estimation ignores
808 // this case as the auto-placement algorithm will grow the grid as neede d. 808 // this case as the auto-placement algorithm will grow the grid as neede d.
809 if (rowPositions) 809 if (rowPositions)
810 maximumRowIndex = std::max<size_t>(maximumRowIndex, rowPositions->re solvedFinalPosition.toInt() + 1); 810 maximumRowIndex = std::max<size_t>(maximumRowIndex, rowPositions->re solvedFinalPosition.next().toInt());
811 if (columnPositions) 811 if (columnPositions)
812 maximumColumnIndex = std::max<size_t>(maximumColumnIndex, columnPosi tions->resolvedFinalPosition.toInt() + 1); 812 maximumColumnIndex = std::max<size_t>(maximumColumnIndex, columnPosi tions->resolvedFinalPosition.next().toInt());
813 } 813 }
814 814
815 m_grid.grow(maximumRowIndex); 815 m_grid.grow(maximumRowIndex);
816 for (size_t i = 0; i < m_grid.size(); ++i) 816 for (size_t i = 0; i < m_grid.size(); ++i)
817 m_grid[i].grow(maximumColumnIndex); 817 m_grid[i].grow(maximumColumnIndex);
818 } 818 }
819 819
820 void RenderGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<RenderBox*>& au toGridItems) 820 void RenderGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<RenderBox*>& au toGridItems)
821 { 821 {
822 for (size_t i = 0; i < autoGridItems.size(); ++i) { 822 for (size_t i = 0; i < autoGridItems.size(); ++i) {
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 { 960 {
961 ASSERT(m_gridItemCoordinate.contains(gridItem)); 961 ASSERT(m_gridItemCoordinate.contains(gridItem));
962 return m_gridItemCoordinate.get(gridItem); 962 return m_gridItemCoordinate.get(gridItem);
963 } 963 }
964 964
965 LayoutUnit RenderGrid::gridAreaBreadthForChild(const RenderBox* child, GridTrack SizingDirection direction, const Vector<GridTrack>& tracks) const 965 LayoutUnit RenderGrid::gridAreaBreadthForChild(const RenderBox* child, GridTrack SizingDirection direction, const Vector<GridTrack>& tracks) const
966 { 966 {
967 const GridCoordinate& coordinate = cachedGridCoordinate(child); 967 const GridCoordinate& coordinate = cachedGridCoordinate(child);
968 const GridSpan& span = (direction == ForColumns) ? coordinate.columns : coor dinate.rows; 968 const GridSpan& span = (direction == ForColumns) ? coordinate.columns : coor dinate.rows;
969 LayoutUnit gridAreaBreadth = 0; 969 LayoutUnit gridAreaBreadth = 0;
970 for (GridResolvedPosition trackPosition = span.resolvedInitialPosition; trac kPosition <= span.resolvedFinalPosition; ++trackPosition) 970 for (GridSpan::iterator trackPosition = span.begin(); trackPosition != span. end(); ++trackPosition)
971 gridAreaBreadth += tracks[trackPosition.toInt()].m_usedBreadth; 971 gridAreaBreadth += tracks[trackPosition.toInt()].m_usedBreadth;
972 return gridAreaBreadth; 972 return gridAreaBreadth;
973 } 973 }
974 974
975 void RenderGrid::populateGridPositions(const GridSizingData& sizingData) 975 void RenderGrid::populateGridPositions(const GridSizingData& sizingData)
976 { 976 {
977 m_columnPositions.resize(sizingData.columnTracks.size() + 1); 977 m_columnPositions.resize(sizingData.columnTracks.size() + 1);
978 m_columnPositions[0] = borderAndPaddingStart(); 978 m_columnPositions[0] = borderAndPaddingStart();
979 for (size_t i = 0; i < m_columnPositions.size() - 1; ++i) 979 for (size_t i = 0; i < m_columnPositions.size() - 1; ++i)
980 m_columnPositions[i + 1] = m_columnPositions[i] + sizingData.columnTrack s[i].m_usedBreadth; 980 m_columnPositions[i + 1] = m_columnPositions[i] + sizingData.columnTrack s[i].m_usedBreadth;
(...skipping 13 matching lines...) Expand all
994 return startOfColumn + marginStartForChild(child); 994 return startOfColumn + marginStartForChild(child);
995 } 995 }
996 996
997 LayoutUnit RenderGrid::endOfColumnForChild(const RenderBox* child) const 997 LayoutUnit RenderGrid::endOfColumnForChild(const RenderBox* child) const
998 { 998 {
999 const GridCoordinate& coordinate = cachedGridCoordinate(child); 999 const GridCoordinate& coordinate = cachedGridCoordinate(child);
1000 LayoutUnit startOfColumn = m_columnPositions[coordinate.columns.resolvedInit ialPosition.toInt()]; 1000 LayoutUnit startOfColumn = m_columnPositions[coordinate.columns.resolvedInit ialPosition.toInt()];
1001 // The grid items should be inside the grid container's border box, that's w hy they need to be shifted. 1001 // The grid items should be inside the grid container's border box, that's w hy they need to be shifted.
1002 LayoutUnit columnPosition = startOfColumn + marginStartForChild(child); 1002 LayoutUnit columnPosition = startOfColumn + marginStartForChild(child);
1003 1003
1004 LayoutUnit endOfColumn = m_columnPositions[coordinate.columns.resolvedFinalP osition.toInt() + 1]; 1004 LayoutUnit endOfColumn = m_columnPositions[coordinate.columns.resolvedFinalP osition.next().toInt()];
1005 // FIXME: This should account for the grid item's <overflow-position>. 1005 // FIXME: This should account for the grid item's <overflow-position>.
1006 return columnPosition + std::max<LayoutUnit>(0, endOfColumn - m_columnPositi ons[coordinate.columns.resolvedInitialPosition.toInt()] - child->logicalWidth()) ; 1006 return columnPosition + std::max<LayoutUnit>(0, endOfColumn - m_columnPositi ons[coordinate.columns.resolvedInitialPosition.toInt()] - child->logicalWidth()) ;
1007 } 1007 }
1008 1008
1009 LayoutUnit RenderGrid::columnPositionAlignedWithGridContainerStart(const RenderB ox* child) const 1009 LayoutUnit RenderGrid::columnPositionAlignedWithGridContainerStart(const RenderB ox* child) const
1010 { 1010 {
1011 if (style()->isLeftToRightDirection()) 1011 if (style()->isLeftToRightDirection())
1012 return startOfColumnForChild(child); 1012 return startOfColumnForChild(child);
1013 1013
1014 return endOfColumnForChild(child); 1014 return endOfColumnForChild(child);
1015 } 1015 }
1016 1016
1017 LayoutUnit RenderGrid::columnPositionAlignedWithGridContainerEnd(const RenderBox * child) const 1017 LayoutUnit RenderGrid::columnPositionAlignedWithGridContainerEnd(const RenderBox * child) const
1018 { 1018 {
1019 if (!style()->isLeftToRightDirection()) 1019 if (!style()->isLeftToRightDirection())
1020 return startOfColumnForChild(child); 1020 return startOfColumnForChild(child);
1021 1021
1022 return endOfColumnForChild(child); 1022 return endOfColumnForChild(child);
1023 } 1023 }
1024 1024
1025 LayoutUnit RenderGrid::centeredColumnPositionForChild(const RenderBox* child) co nst 1025 LayoutUnit RenderGrid::centeredColumnPositionForChild(const RenderBox* child) co nst
1026 { 1026 {
1027 const GridCoordinate& coordinate = cachedGridCoordinate(child); 1027 const GridCoordinate& coordinate = cachedGridCoordinate(child);
1028 LayoutUnit startOfColumn = m_columnPositions[coordinate.columns.resolvedInit ialPosition.toInt()]; 1028 LayoutUnit startOfColumn = m_columnPositions[coordinate.columns.resolvedInit ialPosition.toInt()];
1029 LayoutUnit endOfColumn = m_columnPositions[coordinate.columns.resolvedFinalP osition.toInt() + 1]; 1029 LayoutUnit endOfColumn = m_columnPositions[coordinate.columns.resolvedFinalP osition.next().toInt()];
1030 LayoutUnit columnPosition = startOfColumn + marginStartForChild(child); 1030 LayoutUnit columnPosition = startOfColumn + marginStartForChild(child);
1031 return columnPosition + std::max<LayoutUnit>(0, endOfColumn - startOfColumn - child->logicalWidth()) / 2; 1031 return columnPosition + std::max<LayoutUnit>(0, endOfColumn - startOfColumn - child->logicalWidth()) / 2;
1032 } 1032 }
1033 1033
1034 LayoutUnit RenderGrid::columnPositionForChild(const RenderBox* child) const 1034 LayoutUnit RenderGrid::columnPositionForChild(const RenderBox* child) const
1035 { 1035 {
1036 ItemPosition childJustifySelf = child->style()->justifySelf(); 1036 ItemPosition childJustifySelf = child->style()->justifySelf();
1037 switch (childJustifySelf) { 1037 switch (childJustifySelf) {
1038 case ItemPositionSelfStart: 1038 case ItemPositionSelfStart:
1039 // self-start is based on the child's direction. That's why we need to c heck against the grid container's direction. 1039 // self-start is based on the child's direction. That's why we need to c heck against the grid container's direction.
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1111 static GridSpan dirtiedGridAreas(const Vector<LayoutUnit>& coordinates, LayoutUn it start, LayoutUnit end) 1111 static GridSpan dirtiedGridAreas(const Vector<LayoutUnit>& coordinates, LayoutUn it start, LayoutUnit end)
1112 { 1112 {
1113 // This function does a binary search over the coordinates. 1113 // This function does a binary search over the coordinates.
1114 // FIXME: This doesn't work with grid items overflowing their grid areas and should be tested & fixed. 1114 // FIXME: This doesn't work with grid items overflowing their grid areas and should be tested & fixed.
1115 1115
1116 size_t startGridAreaIndex = std::upper_bound(coordinates.begin(), coordinate s.end() - 1, start) - coordinates.begin(); 1116 size_t startGridAreaIndex = std::upper_bound(coordinates.begin(), coordinate s.end() - 1, start) - coordinates.begin();
1117 if (startGridAreaIndex > 0) 1117 if (startGridAreaIndex > 0)
1118 --startGridAreaIndex; 1118 --startGridAreaIndex;
1119 1119
1120 size_t endGridAreaIndex = std::upper_bound(coordinates.begin() + startGridAr eaIndex, coordinates.end() - 1, end) - coordinates.begin(); 1120 size_t endGridAreaIndex = std::upper_bound(coordinates.begin() + startGridAr eaIndex, coordinates.end() - 1, end) - coordinates.begin();
1121 if (endGridAreaIndex > 0)
1122 --endGridAreaIndex;
1123
1121 return GridSpan(startGridAreaIndex, endGridAreaIndex); 1124 return GridSpan(startGridAreaIndex, endGridAreaIndex);
1122 } 1125 }
1123 1126
1124 class GridCoordinateSorter { 1127 class GridCoordinateSorter {
1125 public: 1128 public:
1126 GridCoordinateSorter(RenderGrid* renderer) : m_renderer(renderer) { } 1129 GridCoordinateSorter(RenderGrid* renderer) : m_renderer(renderer) { }
1127 1130
1128 bool operator()(const RenderBox* firstItem, const RenderBox* secondItem) con st 1131 bool operator()(const RenderBox* firstItem, const RenderBox* secondItem) con st
1129 { 1132 {
1130 GridCoordinate first = m_renderer->cachedGridCoordinate(firstItem); 1133 GridCoordinate first = m_renderer->cachedGridCoordinate(firstItem);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1173 { 1176 {
1174 OrderIteratorPopulator populator(paintIterator); 1177 OrderIteratorPopulator populator(paintIterator);
1175 Vector<RenderBox*>::const_iterator overflowIterator = m_gridItemsOverflo wingGridArea.begin(); 1178 Vector<RenderBox*>::const_iterator overflowIterator = m_gridItemsOverflo wingGridArea.begin();
1176 Vector<RenderBox*>::const_iterator end = m_gridItemsOverflowingGridArea. end(); 1179 Vector<RenderBox*>::const_iterator end = m_gridItemsOverflowingGridArea. end();
1177 1180
1178 for (; overflowIterator != end && rowIsBeforeDirtyArea(cachedGridCoordin ate(*overflowIterator), dirtiedRows); ++overflowIterator) { 1181 for (; overflowIterator != end && rowIsBeforeDirtyArea(cachedGridCoordin ate(*overflowIterator), dirtiedRows); ++overflowIterator) {
1179 if ((*overflowIterator)->frameRect().intersects(localRepaintRect)) 1182 if ((*overflowIterator)->frameRect().intersects(localRepaintRect))
1180 populator.storeChild(*overflowIterator); 1183 populator.storeChild(*overflowIterator);
1181 } 1184 }
1182 1185
1183 for (GridResolvedPosition row = dirtiedRows.resolvedInitialPosition; row < dirtiedRows.resolvedFinalPosition; ++row) { 1186 for (GridSpan::iterator row = dirtiedRows.begin(); row != dirtiedRows.en d(); ++row) {
1184 1187
1185 for (; overflowIterator != end && isInSameRowBeforeDirtyArea(cachedG ridCoordinate(*overflowIterator), row, dirtiedColumns); ++overflowIterator) { 1188 for (; overflowIterator != end && isInSameRowBeforeDirtyArea(cachedG ridCoordinate(*overflowIterator), row, dirtiedColumns); ++overflowIterator) {
1186 if ((*overflowIterator)->frameRect().intersects(localRepaintRect )) 1189 if ((*overflowIterator)->frameRect().intersects(localRepaintRect ))
1187 populator.storeChild(*overflowIterator); 1190 populator.storeChild(*overflowIterator);
1188 } 1191 }
1189 1192
1190 for (GridResolvedPosition column = dirtiedColumns.resolvedInitialPos ition; column < dirtiedColumns.resolvedFinalPosition; ++column) { 1193 for (GridSpan::iterator column = dirtiedColumns.begin(); column != d irtiedColumns.end(); ++column) {
1191 const Vector<RenderBox*, 1>& children = m_grid[row.toInt()][colu mn.toInt()]; 1194 const Vector<RenderBox*, 1>& children = m_grid[row.toInt()][colu mn.toInt()];
1192 // FIXME: If we start adding spanning children in all grid areas they span, this 1195 // FIXME: If we start adding spanning children in all grid areas they span, this
1193 // would make us paint them several times, which is wrong! 1196 // would make us paint them several times, which is wrong!
1194 for (size_t j = 0; j < children.size(); ++j) { 1197 for (size_t j = 0; j < children.size(); ++j) {
1195 populator.storeChild(children[j]); 1198 populator.storeChild(children[j]);
1196 // Do not paint overflowing grid items twice. 1199 // Do not paint overflowing grid items twice.
1197 if (overflowIterator != end && *overflowIterator == children [j]) 1200 if (overflowIterator != end && *overflowIterator == children [j])
1198 ++overflowIterator; 1201 ++overflowIterator;
1199 } 1202 }
1200 } 1203 }
(...skipping 21 matching lines...) Expand all
1222 if (isOutOfFlowPositioned()) 1225 if (isOutOfFlowPositioned())
1223 return "RenderGrid (positioned)"; 1226 return "RenderGrid (positioned)";
1224 if (isAnonymous()) 1227 if (isAnonymous())
1225 return "RenderGrid (generated)"; 1228 return "RenderGrid (generated)";
1226 if (isRelPositioned()) 1229 if (isRelPositioned())
1227 return "RenderGrid (relative positioned)"; 1230 return "RenderGrid (relative positioned)";
1228 return "RenderGrid"; 1231 return "RenderGrid";
1229 } 1232 }
1230 1233
1231 } // namespace WebCore 1234 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/css/parser/CSSPropertyParser.cpp ('k') | Source/core/rendering/style/GridCoordinate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698