Changeset 190784 in webkit
- Timestamp:
- Oct 9, 2015 5:56:43 AM (9 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r190783 r190784 1 2015-10-07 Sergio Villar Senin <svillar@igalia.com> 2 3 [css-grid] Include freeSpace in GridSizingData struct 4 https://bugs.webkit.org/show_bug.cgi?id=149876 5 6 Reviewed by Darin Adler. 7 8 During the layout process we keep the free space for rows and 9 columns in two variables that are passed to a few methods 10 along with the GridSizingData struct. Those two variables 11 should clearly be part of GridSizingData as they're temporary 12 values used just for the sake of the layout. 13 14 No new tests required as this is just a refactoring. 15 16 * rendering/RenderGrid.cpp: 17 (WebCore::RenderGrid::GridSizingData::GridSizingData): 18 (WebCore::RenderGrid::GridSizingData::freeSpaceForDirection): 19 (WebCore::RenderGrid::computeIntrinsicLogicalWidths): 20 (WebCore::RenderGrid::computeUsedBreadthOfGridTracks): 21 (WebCore::RenderGrid::applyStretchAlignmentToTracksIfNeeded): 22 (WebCore::RenderGrid::layoutGridItems): 23 (WebCore::RenderGrid::populateGridPositions): 24 (WebCore::contentDistributionOffset): 25 (WebCore::RenderGrid::computeContentPositionAndDistributionOffset): 26 * rendering/RenderGrid.h: 27 1 28 2015-10-08 Sergio Villar Senin <svillar@igalia.com> 2 29 -
trunk/Source/WebCore/rendering/RenderGrid.cpp
r190783 r190784 211 211 WTF_MAKE_NONCOPYABLE(GridSizingData); 212 212 public: 213 GridSizingData(unsigned gridColumnCount, unsigned gridRowCount )213 GridSizingData(unsigned gridColumnCount, unsigned gridRowCount, LayoutUnit freeSpaceForColumns, LayoutUnit freeSpaceForRows) 214 214 : columnTracks(gridColumnCount) 215 215 , rowTracks(gridRowCount) 216 , freeSpaceForColumns(freeSpaceForColumns) 217 , freeSpaceForRows(freeSpaceForRows) 216 218 { 217 219 } … … 225 227 Vector<GridTrack*> growBeyondGrowthLimitsTracks; 226 228 Vector<GridItemWithSpan> itemsSortedByIncreasingSpan; 229 230 LayoutUnit& freeSpaceForDirection(GridTrackSizingDirection direction) { return direction == ForColumns ? freeSpaceForColumns : freeSpaceForRows; } 231 232 private: 233 LayoutUnit freeSpaceForColumns; 234 LayoutUnit freeSpaceForRows; 227 235 }; 228 236 … … 346 354 const_cast<RenderGrid*>(this)->placeItemsOnGrid(); 347 355 348 GridSizingData sizingData(gridColumnCount(), gridRowCount()); 349 LayoutUnit availableLogicalSpace = 0; 350 const_cast<RenderGrid*>(this)->computeUsedBreadthOfGridTracks(ForColumns, sizingData, availableLogicalSpace); 356 GridSizingData sizingData(gridColumnCount(), gridRowCount(), 0, 0); 357 const_cast<RenderGrid*>(this)->computeUsedBreadthOfGridTracks(ForColumns, sizingData); 351 358 352 359 for (auto& column : sizingData.columnTracks) { … … 380 387 } 381 388 382 void RenderGrid::computeUsedBreadthOfGridTracks(GridTrackSizingDirection direction, GridSizingData& sizingData, LayoutUnit& availableLogicalSpace) 383 { 389 void RenderGrid::computeUsedBreadthOfGridTracks(GridTrackSizingDirection direction, GridSizingData& sizingData) 390 { 391 LayoutUnit& availableLogicalSpace = sizingData.freeSpaceForDirection(direction); 384 392 const LayoutUnit initialAvailableLogicalSpace = availableLogicalSpace; 385 393 Vector<GridTrack>& tracks = (direction == ForColumns) ? sizingData.columnTracks : sizingData.rowTracks; … … 1223 1231 } 1224 1232 1225 void RenderGrid::applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection direction, GridSizingData& sizingData, LayoutUnit availableSpace) 1226 { 1233 void RenderGrid::applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection direction, GridSizingData& sizingData) 1234 { 1235 LayoutUnit& availableSpace = sizingData.freeSpaceForDirection(direction); 1227 1236 if (availableSpace <= 0 1228 1237 || (direction == ForColumns && style().resolvedJustifyContentDistribution() != ContentDistributionStretch) … … 1248 1257 track.setBaseSize(track.baseSize() + sizeToIncrease); 1249 1258 } 1259 availableSpace = 0; 1250 1260 } 1251 1261 … … 1261 1271 availableSpaceForRows -= guttersSize(ForRows, gridRowCount()); 1262 1272 1263 GridSizingData sizingData(gridColumnCount(), gridRowCount() );1264 computeUsedBreadthOfGridTracks(ForColumns, sizingData , availableSpaceForColumns);1273 GridSizingData sizingData(gridColumnCount(), gridRowCount(), availableSpaceForColumns, availableSpaceForRows); 1274 computeUsedBreadthOfGridTracks(ForColumns, sizingData); 1265 1275 ASSERT(tracksAreWiderThanMinTrackBreadth(ForColumns, sizingData.columnTracks)); 1266 computeUsedBreadthOfGridTracks(ForRows, sizingData , availableSpaceForRows);1276 computeUsedBreadthOfGridTracks(ForRows, sizingData); 1267 1277 ASSERT(tracksAreWiderThanMinTrackBreadth(ForRows, sizingData.rowTracks)); 1268 1278 1269 applyStretchAlignmentToTracksIfNeeded(ForColumns, sizingData , availableSpaceForColumns);1270 applyStretchAlignmentToTracksIfNeeded(ForRows, sizingData , availableSpaceForRows);1271 1272 populateGridPositions(sizingData , availableSpaceForColumns, availableSpaceForRows);1279 applyStretchAlignmentToTracksIfNeeded(ForColumns, sizingData); 1280 applyStretchAlignmentToTracksIfNeeded(ForRows, sizingData); 1281 1282 populateGridPositions(sizingData); 1273 1283 1274 1284 for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBox()) { … … 1362 1372 } 1363 1373 1364 void RenderGrid::populateGridPositions(GridSizingData& sizingData , LayoutUnit availableSpaceForColumns, LayoutUnit availableSpaceForRows)1374 void RenderGrid::populateGridPositions(GridSizingData& sizingData) 1365 1375 { 1366 1376 // Since we add alignment offsets and track gutters, grid lines are not always adjacent. Hence we will have to … … 1374 1384 unsigned lastLine = numberOfLines - 1; 1375 1385 unsigned nextToLastLine = numberOfLines - 2; 1376 ContentAlignmentData offset = computeContentPositionAndDistributionOffset(ForColumns, availableSpaceForColumns, numberOfTracks);1386 ContentAlignmentData offset = computeContentPositionAndDistributionOffset(ForColumns, sizingData.freeSpaceForDirection(ForColumns), numberOfTracks); 1377 1387 LayoutUnit trackGap = guttersSize(ForColumns, 2); 1378 1388 m_columnPositions.resize(numberOfLines); … … 1386 1396 lastLine = numberOfLines - 1; 1387 1397 nextToLastLine = numberOfLines - 2; 1388 offset = computeContentPositionAndDistributionOffset(ForRows, availableSpaceForRows, numberOfTracks);1398 offset = computeContentPositionAndDistributionOffset(ForRows, sizingData.freeSpaceForDirection(ForRows), numberOfTracks); 1389 1399 trackGap = guttersSize(ForRows, 2); 1390 1400 m_rowPositions.resize(numberOfLines); … … 1748 1758 } 1749 1759 1750 static ContentAlignmentData contentDistributionOffset( LayoutUnitavailableFreeSpace, ContentPosition& fallbackPosition, ContentDistributionType distribution, unsigned numberOfGridTracks)1760 static ContentAlignmentData contentDistributionOffset(const LayoutUnit& availableFreeSpace, ContentPosition& fallbackPosition, ContentDistributionType distribution, unsigned numberOfGridTracks) 1751 1761 { 1752 1762 if (distribution != ContentDistributionDefault && fallbackPosition == ContentPositionAuto) … … 1780 1790 } 1781 1791 1782 ContentAlignmentData RenderGrid::computeContentPositionAndDistributionOffset(GridTrackSizingDirection direction, LayoutUnitavailableFreeSpace, unsigned numberOfGridTracks) const1792 ContentAlignmentData RenderGrid::computeContentPositionAndDistributionOffset(GridTrackSizingDirection direction, const LayoutUnit& availableFreeSpace, unsigned numberOfGridTracks) const 1783 1793 { 1784 1794 bool isRowAxis = direction == ForColumns; -
trunk/Source/WebCore/rendering/RenderGrid.h
r190783 r190784 70 70 class GridIterator; 71 71 class GridSizingData; 72 void computeUsedBreadthOfGridTracks(GridTrackSizingDirection, GridSizingData& , LayoutUnit& availableLogicalSpace);72 void computeUsedBreadthOfGridTracks(GridTrackSizingDirection, GridSizingData&); 73 73 bool gridElementIsShrinkToFit(); 74 74 LayoutUnit computeUsedBreadthOfMinLength(const GridLength&, LayoutUnit maxSize) const; … … 89 89 90 90 void layoutGridItems(); 91 void populateGridPositions(GridSizingData& , LayoutUnit availableSpaceForColumns, LayoutUnit availableSpaceForRows);91 void populateGridPositions(GridSizingData&); 92 92 void clearGrid(); 93 93 … … 130 130 LayoutUnit columnAxisOffsetForChild(const RenderBox&) const; 131 131 LayoutUnit rowAxisOffsetForChild(const RenderBox&) const; 132 ContentAlignmentData computeContentPositionAndDistributionOffset(GridTrackSizingDirection, LayoutUnitavailableFreeSpace, unsigned numberOfGridTracks) const;132 ContentAlignmentData computeContentPositionAndDistributionOffset(GridTrackSizingDirection, const LayoutUnit& availableFreeSpace, unsigned numberOfGridTracks) const; 133 133 LayoutPoint findChildLogicalPosition(const RenderBox&) const; 134 134 GridCoordinate cachedGridCoordinate(const RenderBox&) const; … … 138 138 LayoutUnit gridAreaBreadthForChildIncludingAlignmentOffsets(const RenderBox&, GridTrackSizingDirection, const GridSizingData&) const; 139 139 140 void applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection, GridSizingData& , LayoutUnit availableSpace);140 void applyStretchAlignmentToTracksIfNeeded(GridTrackSizingDirection, GridSizingData&); 141 141 142 142 virtual void paintChildren(PaintInfo& forSelf, const LayoutPoint& paintOffset, PaintInfo& forChild, bool usePrintRect) override;
Note: See TracChangeset
for help on using the changeset viewer.