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 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 RenderBlock::addChild(newChild, beforeChild); | 217 RenderBlock::addChild(newChild, beforeChild); |
218 | 218 |
219 if (gridIsDirty()) | 219 if (gridIsDirty()) |
220 return; | 220 return; |
221 | 221 |
222 if (!newChild->isBox()) { | 222 if (!newChild->isBox()) { |
223 dirtyGrid(); | 223 dirtyGrid(); |
224 return; | 224 return; |
225 } | 225 } |
226 | 226 |
| 227 // Positioned items shouldn't take up space or otherwise participate in the
layout of the grid. |
| 228 if (newChild->isOutOfFlowPositioned()) |
| 229 return; |
| 230 |
227 // If the new child has been inserted inside an existent anonymous block, we
can simply ignore it as the anonymous | 231 // If the new child has been inserted inside an existent anonymous block, we
can simply ignore it as the anonymous |
228 // block is an already known grid item. | 232 // block is an already known grid item. |
229 if (newChild->parent() != this) | 233 if (newChild->parent() != this) |
230 return; | 234 return; |
231 | 235 |
232 // FIXME: Implement properly "stack" value in auto-placement algorithm. | 236 // FIXME: Implement properly "stack" value in auto-placement algorithm. |
233 if (!style()->isGridAutoFlowAlgorithmStack()) { | 237 if (!style()->isGridAutoFlowAlgorithmStack()) { |
234 // The grid needs to be recomputed as it might contain auto-placed items
that will change their position. | 238 // The grid needs to be recomputed as it might contain auto-placed items
that will change their position. |
235 dirtyGrid(); | 239 dirtyGrid(); |
236 return; | 240 return; |
237 } | 241 } |
238 | 242 |
239 RenderBox* newChildBox = toRenderBox(newChild); | 243 RenderBox* newChildBox = toRenderBox(newChild); |
240 OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositionsFr
omStyle(*style(), *newChildBox, ForRows); | 244 OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositionsFr
omStyle(*style(), *newChildBox, ForRows); |
241 OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosition
sFromStyle(*style(), *newChildBox, ForColumns); | 245 OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosition
sFromStyle(*style(), *newChildBox, ForColumns); |
242 if (!rowPositions || !columnPositions) { | 246 if (!rowPositions || !columnPositions) { |
243 // The new child requires the auto-placement algorithm to run so we need
to recompute the grid fully. | 247 // The new child requires the auto-placement algorithm to run so we need
to recompute the grid fully. |
244 dirtyGrid(); | 248 dirtyGrid(); |
245 return; | 249 return; |
246 } else { | 250 } else { |
247 insertItemIntoGrid(*newChildBox, GridCoordinate(*rowPositions, *columnPo
sitions)); | 251 insertItemIntoGrid(*newChildBox, GridCoordinate(*rowPositions, *columnPo
sitions)); |
248 addChildToIndexesMap(*newChildBox); | 252 addChildToIndexesMap(*newChildBox); |
249 } | 253 } |
250 } | 254 } |
251 | 255 |
252 void RenderGrid::addChildToIndexesMap(RenderBox& child) | 256 void RenderGrid::addChildToIndexesMap(RenderBox& child) |
253 { | 257 { |
254 ASSERT(!m_gridItemsIndexesMap.contains(&child)); | 258 ASSERT(!m_gridItemsIndexesMap.contains(&child)); |
255 RenderBox* sibling = child.nextSiblingBox(); | 259 RenderBox* sibling = child.nextInFlowSiblingBox(); |
256 bool lastSibling = !sibling; | 260 bool lastSibling = !sibling; |
257 | 261 |
258 if (lastSibling) | 262 if (lastSibling) |
259 sibling = child.previousSiblingBox(); | 263 sibling = child.previousInFlowSiblingBox(); |
260 | 264 |
261 size_t index = 0; | 265 size_t index = 0; |
262 if (sibling) | 266 if (sibling) |
263 index = lastSibling ? m_gridItemsIndexesMap.get(sibling) + 1 : m_gridIte
msIndexesMap.get(sibling); | 267 index = lastSibling ? m_gridItemsIndexesMap.get(sibling) + 1 : m_gridIte
msIndexesMap.get(sibling); |
264 | 268 |
265 if (sibling && !lastSibling) { | 269 if (sibling && !lastSibling) { |
266 for (; sibling; sibling = sibling->nextSiblingBox()) | 270 for (; sibling; sibling = sibling->nextInFlowSiblingBox()) |
267 m_gridItemsIndexesMap.set(sibling, m_gridItemsIndexesMap.get(sibling
) + 1); | 271 m_gridItemsIndexesMap.set(sibling, m_gridItemsIndexesMap.get(sibling
) + 1); |
268 } | 272 } |
269 | 273 |
270 m_gridItemsIndexesMap.set(&child, index); | 274 m_gridItemsIndexesMap.set(&child, index); |
271 } | 275 } |
272 | 276 |
273 void RenderGrid::removeChild(RenderObject* child) | 277 void RenderGrid::removeChild(RenderObject* child) |
274 { | 278 { |
275 RenderBlock::removeChild(child); | 279 RenderBlock::removeChild(child); |
276 | 280 |
277 if (gridIsDirty()) | 281 if (gridIsDirty()) |
278 return; | 282 return; |
279 | 283 |
280 ASSERT(child->isBox()); | 284 ASSERT(child->isBox()); |
281 | 285 |
282 // FIXME: Implement properly "stack" value in auto-placement algorithm. | 286 // FIXME: Implement properly "stack" value in auto-placement algorithm. |
283 if (!style()->isGridAutoFlowAlgorithmStack()) { | 287 if (!style()->isGridAutoFlowAlgorithmStack()) { |
284 // The grid needs to be recomputed as it might contain auto-placed items
that will change their position. | 288 // The grid needs to be recomputed as it might contain auto-placed items
that will change their position. |
285 dirtyGrid(); | 289 dirtyGrid(); |
286 return; | 290 return; |
287 } | 291 } |
288 | 292 |
| 293 if (child->isOutOfFlowPositioned()) |
| 294 return; |
| 295 |
289 const RenderBox* childBox = toRenderBox(child); | 296 const RenderBox* childBox = toRenderBox(child); |
290 GridCoordinate coordinate = m_gridItemCoordinate.take(childBox); | 297 GridCoordinate coordinate = m_gridItemCoordinate.take(childBox); |
291 | 298 |
292 for (GridSpan::iterator row = coordinate.rows.begin(); row != coordinate.row
s.end(); ++row) { | 299 for (GridSpan::iterator row = coordinate.rows.begin(); row != coordinate.row
s.end(); ++row) { |
293 for (GridSpan::iterator column = coordinate.columns.begin(); column != c
oordinate.columns.end(); ++column) { | 300 for (GridSpan::iterator column = coordinate.columns.begin(); column != c
oordinate.columns.end(); ++column) { |
294 GridCell& cell = m_grid[row.toInt()][column.toInt()]; | 301 GridCell& cell = m_grid[row.toInt()][column.toInt()]; |
295 cell.remove(cell.find(childBox)); | 302 cell.remove(cell.find(childBox)); |
296 } | 303 } |
297 } | 304 } |
298 | 305 |
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
900 | 907 |
901 populateExplicitGridAndOrderIterator(); | 908 populateExplicitGridAndOrderIterator(); |
902 | 909 |
903 // We clear the dirty bit here as the grid sizes have been updated, this mea
ns | 910 // We clear the dirty bit here as the grid sizes have been updated, this mea
ns |
904 // that we can safely call gridRowCount() / gridColumnCount(). | 911 // that we can safely call gridRowCount() / gridColumnCount(). |
905 m_gridIsDirty = false; | 912 m_gridIsDirty = false; |
906 | 913 |
907 Vector<RenderBox*> autoMajorAxisAutoGridItems; | 914 Vector<RenderBox*> autoMajorAxisAutoGridItems; |
908 Vector<RenderBox*> specifiedMajorAxisAutoGridItems; | 915 Vector<RenderBox*> specifiedMajorAxisAutoGridItems; |
909 for (RenderBox* child = m_orderIterator.first(); child; child = m_orderItera
tor.next()) { | 916 for (RenderBox* child = m_orderIterator.first(); child; child = m_orderItera
tor.next()) { |
| 917 if (child->isOutOfFlowPositioned()) |
| 918 continue; |
| 919 |
910 // FIXME: We never re-resolve positions if the grid is grown during auto
-placement which may lead auto / <integer> | 920 // FIXME: We never re-resolve positions if the grid is grown during auto
-placement which may lead auto / <integer> |
911 // positions to not match the author's intent. The specification is uncl
ear on what should be done in this case. | 921 // positions to not match the author's intent. The specification is uncl
ear on what should be done in this case. |
912 OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositio
nsFromStyle(*style(), *child, ForRows); | 922 OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositio
nsFromStyle(*style(), *child, ForRows); |
913 OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosi
tionsFromStyle(*style(), *child, ForColumns); | 923 OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosi
tionsFromStyle(*style(), *child, ForColumns); |
914 if (!rowPositions || !columnPositions) { | 924 if (!rowPositions || !columnPositions) { |
915 GridSpan* majorAxisPositions = (autoPlacementMajorAxisDirection() ==
ForColumns) ? columnPositions.get() : rowPositions.get(); | 925 GridSpan* majorAxisPositions = (autoPlacementMajorAxisDirection() ==
ForColumns) ? columnPositions.get() : rowPositions.get(); |
916 if (!majorAxisPositions) | 926 if (!majorAxisPositions) |
917 autoMajorAxisAutoGridItems.append(child); | 927 autoMajorAxisAutoGridItems.append(child); |
918 else | 928 else |
919 specifiedMajorAxisAutoGridItems.append(child); | 929 specifiedMajorAxisAutoGridItems.append(child); |
(...skipping 21 matching lines...) Expand all Loading... |
941 | 951 |
942 void RenderGrid::populateExplicitGridAndOrderIterator() | 952 void RenderGrid::populateExplicitGridAndOrderIterator() |
943 { | 953 { |
944 OrderIteratorPopulator populator(m_orderIterator); | 954 OrderIteratorPopulator populator(m_orderIterator); |
945 | 955 |
946 size_t maximumRowIndex = std::max<size_t>(1, GridResolvedPosition::explicitG
ridRowCount(*style())); | 956 size_t maximumRowIndex = std::max<size_t>(1, GridResolvedPosition::explicitG
ridRowCount(*style())); |
947 size_t maximumColumnIndex = std::max<size_t>(1, GridResolvedPosition::explic
itGridColumnCount(*style())); | 957 size_t maximumColumnIndex = std::max<size_t>(1, GridResolvedPosition::explic
itGridColumnCount(*style())); |
948 | 958 |
949 ASSERT(m_gridItemsIndexesMap.isEmpty()); | 959 ASSERT(m_gridItemsIndexesMap.isEmpty()); |
950 size_t childIndex = 0; | 960 size_t childIndex = 0; |
951 for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo
x()) { | 961 for (RenderBox* child = firstChildBox(); child; child = child->nextInFlowSib
lingBox()) { |
952 populator.collectChild(child); | 962 populator.collectChild(child); |
953 m_gridItemsIndexesMap.set(child, childIndex++); | 963 m_gridItemsIndexesMap.set(child, childIndex++); |
954 | 964 |
955 // This function bypasses the cache (cachedGridCoordinate()) as it is us
ed to build it. | 965 // This function bypasses the cache (cachedGridCoordinate()) as it is us
ed to build it. |
956 OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositio
nsFromStyle(*style(), *child, ForRows); | 966 OwnPtr<GridSpan> rowPositions = GridResolvedPosition::resolveGridPositio
nsFromStyle(*style(), *child, ForRows); |
957 OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosi
tionsFromStyle(*style(), *child, ForColumns); | 967 OwnPtr<GridSpan> columnPositions = GridResolvedPosition::resolveGridPosi
tionsFromStyle(*style(), *child, ForColumns); |
958 | 968 |
959 // |positions| is 0 if we need to run the auto-placement algorithm. | 969 // |positions| is 0 if we need to run the auto-placement algorithm. |
960 if (rowPositions) { | 970 if (rowPositions) { |
961 maximumRowIndex = std::max<size_t>(maximumRowIndex, rowPositions->re
solvedFinalPosition.next().toInt()); | 971 maximumRowIndex = std::max<size_t>(maximumRowIndex, rowPositions->re
solvedFinalPosition.next().toInt()); |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1102 computeUsedBreadthOfGridTracks(ForColumns, sizingData, availableSpaceForColu
mns); | 1112 computeUsedBreadthOfGridTracks(ForColumns, sizingData, availableSpaceForColu
mns); |
1103 ASSERT(tracksAreWiderThanMinTrackBreadth(ForColumns, sizingData.columnTracks
)); | 1113 ASSERT(tracksAreWiderThanMinTrackBreadth(ForColumns, sizingData.columnTracks
)); |
1104 computeUsedBreadthOfGridTracks(ForRows, sizingData, availableSpaceForRows); | 1114 computeUsedBreadthOfGridTracks(ForRows, sizingData, availableSpaceForRows); |
1105 ASSERT(tracksAreWiderThanMinTrackBreadth(ForRows, sizingData.rowTracks)); | 1115 ASSERT(tracksAreWiderThanMinTrackBreadth(ForRows, sizingData.rowTracks)); |
1106 | 1116 |
1107 populateGridPositions(sizingData, availableSpaceForColumns, availableSpaceFo
rRows); | 1117 populateGridPositions(sizingData, availableSpaceForColumns, availableSpaceFo
rRows); |
1108 m_gridItemsOverflowingGridArea.resize(0); | 1118 m_gridItemsOverflowingGridArea.resize(0); |
1109 | 1119 |
1110 for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo
x()) { | 1120 for (RenderBox* child = firstChildBox(); child; child = child->nextSiblingBo
x()) { |
1111 if (child->isOutOfFlowPositioned()) { | 1121 if (child->isOutOfFlowPositioned()) { |
1112 // FIXME: Absolute positioned grid items should have a special | |
1113 // behavior as described in the spec (crbug.com/273898): | |
1114 // http://www.w3.org/TR/css-grid-1/#abspos-items | |
1115 child->containingBlock()->insertPositionedObject(child); | 1122 child->containingBlock()->insertPositionedObject(child); |
| 1123 continue; |
1116 } | 1124 } |
1117 | 1125 |
1118 // Because the grid area cannot be styled, we don't need to adjust | 1126 // Because the grid area cannot be styled, we don't need to adjust |
1119 // the grid breadth to account for 'box-sizing'. | 1127 // the grid breadth to account for 'box-sizing'. |
1120 LayoutUnit oldOverrideContainingBlockContentLogicalWidth = child->hasOve
rrideContainingBlockLogicalWidth() ? child->overrideContainingBlockContentLogica
lWidth() : LayoutUnit(); | 1128 LayoutUnit oldOverrideContainingBlockContentLogicalWidth = child->hasOve
rrideContainingBlockLogicalWidth() ? child->overrideContainingBlockContentLogica
lWidth() : LayoutUnit(); |
1121 LayoutUnit oldOverrideContainingBlockContentLogicalHeight = child->hasOv
errideContainingBlockLogicalHeight() ? child->overrideContainingBlockContentLogi
calHeight() : LayoutUnit(); | 1129 LayoutUnit oldOverrideContainingBlockContentLogicalHeight = child->hasOv
errideContainingBlockLogicalHeight() ? child->overrideContainingBlockContentLogi
calHeight() : LayoutUnit(); |
1122 | 1130 |
1123 LayoutUnit overrideContainingBlockContentLogicalWidth = gridAreaBreadthF
orChild(*child, ForColumns, sizingData.columnTracks); | 1131 LayoutUnit overrideContainingBlockContentLogicalWidth = gridAreaBreadthF
orChild(*child, ForColumns, sizingData.columnTracks); |
1124 LayoutUnit overrideContainingBlockContentLogicalHeight = gridAreaBreadth
ForChild(*child, ForRows, sizingData.rowTracks); | 1132 LayoutUnit overrideContainingBlockContentLogicalHeight = gridAreaBreadth
ForChild(*child, ForRows, sizingData.rowTracks); |
1125 | 1133 |
(...skipping 23 matching lines...) Expand all Loading... |
1149 } | 1157 } |
1150 | 1158 |
1151 for (size_t i = 0; i < sizingData.rowTracks.size(); ++i) | 1159 for (size_t i = 0; i < sizingData.rowTracks.size(); ++i) |
1152 setLogicalHeight(logicalHeight() + sizingData.rowTracks[i].m_usedBreadth
); | 1160 setLogicalHeight(logicalHeight() + sizingData.rowTracks[i].m_usedBreadth
); |
1153 | 1161 |
1154 // Min / max logical height is handled by the call to updateLogicalHeight in
layoutBlock. | 1162 // Min / max logical height is handled by the call to updateLogicalHeight in
layoutBlock. |
1155 | 1163 |
1156 setLogicalHeight(logicalHeight() + borderAndPaddingLogicalHeight()); | 1164 setLogicalHeight(logicalHeight() + borderAndPaddingLogicalHeight()); |
1157 } | 1165 } |
1158 | 1166 |
| 1167 void RenderGrid::layoutPositionedObjects(bool relayoutChildren, PositionedLayout
Behavior info) |
| 1168 { |
| 1169 TrackedRendererListHashSet* positionedDescendants = positionedObjects(); |
| 1170 if (!positionedDescendants) |
| 1171 return; |
| 1172 |
| 1173 bool containerHasHorizontalWritingMode = isHorizontalWritingMode(); |
| 1174 TrackedRendererListHashSet::iterator end = positionedDescendants->end(); |
| 1175 for (TrackedRendererListHashSet::iterator it = positionedDescendants->begin(
); it != end; ++it) { |
| 1176 RenderBox* child = *it; |
| 1177 |
| 1178 bool hasOrthogonalWritingMode = child->isHorizontalWritingMode() != cont
ainerHasHorizontalWritingMode; |
| 1179 if (hasOrthogonalWritingMode) { |
| 1180 // FIXME: Properly support orthogonal writing mode. |
| 1181 continue; |
| 1182 } |
| 1183 |
| 1184 // FIXME: Detect properly if start/end is auto for inexistent named grid
lines. |
| 1185 bool columnStartIsAuto = child->style()->gridColumnStart().isAuto(); |
| 1186 LayoutUnit columnOffset = LayoutUnit(0); |
| 1187 LayoutUnit columnBreadth = LayoutUnit(0); |
| 1188 offsetAndBreadthForPositionedChild(*child, ForColumns, columnStartIsAuto
, child->style()->gridColumnEnd().isAuto(), columnOffset, columnBreadth); |
| 1189 bool rowStartIsAuto = child->style()->gridRowStart().isAuto(); |
| 1190 LayoutUnit rowOffset = LayoutUnit(0); |
| 1191 LayoutUnit rowBreadth = LayoutUnit(0); |
| 1192 offsetAndBreadthForPositionedChild(*child, ForRows, rowStartIsAuto, chil
d->style()->gridRowEnd().isAuto(), rowOffset, rowBreadth); |
| 1193 |
| 1194 child->setOverrideContainingBlockContentLogicalWidth(columnBreadth); |
| 1195 child->setOverrideContainingBlockContentLogicalHeight(rowBreadth); |
| 1196 child->setExtraInlineOffset(columnOffset); |
| 1197 child->setExtraBlockOffset(rowOffset); |
| 1198 |
| 1199 if (child->parent() == this) { |
| 1200 // If column/row start is not auto the padding has been already comp
uted in offsetAndBreadthForPositionedChild(). |
| 1201 RenderLayer* childLayer = child->layer(); |
| 1202 if (columnStartIsAuto) |
| 1203 childLayer->setStaticInlinePosition(borderAndPaddingStart()); |
| 1204 else |
| 1205 childLayer->setStaticInlinePosition(borderStart() + columnOffset
); |
| 1206 if (rowStartIsAuto) |
| 1207 childLayer->setStaticBlockPosition(borderAndPaddingBefore()); |
| 1208 else |
| 1209 childLayer->setStaticBlockPosition(borderBefore() + rowOffset); |
| 1210 } |
| 1211 } |
| 1212 |
| 1213 RenderBlock::layoutPositionedObjects(relayoutChildren, info); |
| 1214 } |
| 1215 |
| 1216 void RenderGrid::offsetAndBreadthForPositionedChild(const RenderBox& child, Grid
TrackSizingDirection direction, bool startIsAuto, bool endIsAuto, LayoutUnit& of
fset, LayoutUnit& breadth) |
| 1217 { |
| 1218 ASSERT(child.isHorizontalWritingMode() == isHorizontalWritingMode()); |
| 1219 |
| 1220 OwnPtr<GridSpan> positions = GridResolvedPosition::resolveGridPositionsFromS
tyle(*style(), child, direction); |
| 1221 if (!positions) { |
| 1222 offset = LayoutUnit(0); |
| 1223 breadth = (direction == ForColumns) ? clientLogicalWidth() : clientLogic
alHeight(); |
| 1224 return; |
| 1225 } |
| 1226 |
| 1227 GridResolvedPosition firstPosition = GridResolvedPosition(0); |
| 1228 GridResolvedPosition initialPosition = startIsAuto ? firstPosition : positio
ns->resolvedInitialPosition; |
| 1229 GridResolvedPosition lastPosition = GridResolvedPosition((direction == ForCo
lumns ? gridColumnCount() : gridRowCount()) - 1); |
| 1230 GridResolvedPosition finalPosition = endIsAuto ? lastPosition : positions->r
esolvedFinalPosition; |
| 1231 |
| 1232 LayoutUnit start = startIsAuto ? LayoutUnit(0) : (direction == ForColumns) ?
m_columnPositions[initialPosition.toInt()] : m_rowPositions[initialPosition.to
Int()]; |
| 1233 LayoutUnit end = endIsAuto ? (direction == ForColumns) ? logicalWidth() : lo
gicalHeight() : (direction == ForColumns) ? m_columnPositions[finalPosition.nex
t().toInt()] : m_rowPositions[finalPosition.next().toInt()]; |
| 1234 |
| 1235 breadth = end - start; |
| 1236 |
| 1237 if (startIsAuto) |
| 1238 breadth -= (direction == ForColumns) ? borderStart() : borderBefore(); |
| 1239 else |
| 1240 start -= ((direction == ForColumns) ? borderStart() : borderBefore()); |
| 1241 |
| 1242 if (endIsAuto) { |
| 1243 breadth -= (direction == ForColumns) ? borderEnd() : borderAfter(); |
| 1244 breadth -= scrollbarLogicalWidth(); |
| 1245 } |
| 1246 |
| 1247 offset = start; |
| 1248 } |
| 1249 |
1159 GridCoordinate RenderGrid::cachedGridCoordinate(const RenderBox& gridItem) const | 1250 GridCoordinate RenderGrid::cachedGridCoordinate(const RenderBox& gridItem) const |
1160 { | 1251 { |
1161 ASSERT(m_gridItemCoordinate.contains(&gridItem)); | 1252 ASSERT(m_gridItemCoordinate.contains(&gridItem)); |
1162 return m_gridItemCoordinate.get(&gridItem); | 1253 return m_gridItemCoordinate.get(&gridItem); |
1163 } | 1254 } |
1164 | 1255 |
1165 LayoutUnit RenderGrid::gridAreaBreadthForChild(const RenderBox& child, GridTrack
SizingDirection direction, const Vector<GridTrack>& tracks) const | 1256 LayoutUnit RenderGrid::gridAreaBreadthForChild(const RenderBox& child, GridTrack
SizingDirection direction, const Vector<GridTrack>& tracks) const |
1166 { | 1257 { |
1167 const GridCoordinate& coordinate = cachedGridCoordinate(child); | 1258 const GridCoordinate& coordinate = cachedGridCoordinate(child); |
1168 const GridSpan& span = (direction == ForColumns) ? coordinate.columns : coor
dinate.rows; | 1259 const GridSpan& span = (direction == ForColumns) ? coordinate.columns : coor
dinate.rows; |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1602 if (isOutOfFlowPositioned()) | 1693 if (isOutOfFlowPositioned()) |
1603 return "RenderGrid (positioned)"; | 1694 return "RenderGrid (positioned)"; |
1604 if (isAnonymous()) | 1695 if (isAnonymous()) |
1605 return "RenderGrid (generated)"; | 1696 return "RenderGrid (generated)"; |
1606 if (isRelPositioned()) | 1697 if (isRelPositioned()) |
1607 return "RenderGrid (relative positioned)"; | 1698 return "RenderGrid (relative positioned)"; |
1608 return "RenderGrid"; | 1699 return "RenderGrid"; |
1609 } | 1700 } |
1610 | 1701 |
1611 } // namespace blink | 1702 } // namespace blink |
OLD | NEW |