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

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

Issue 211053002: [CSS Grid Layout] Avoid mark grid as dirty always when removing a child (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Patch for landing 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 } 216 }
217 217
218 void RenderGrid::removeChild(RenderObject* child) 218 void RenderGrid::removeChild(RenderObject* child)
219 { 219 {
220 RenderBlock::removeChild(child); 220 RenderBlock::removeChild(child);
221 221
222 if (gridIsDirty()) 222 if (gridIsDirty())
223 return; 223 return;
224 224
225 ASSERT(child->isBox()); 225 ASSERT(child->isBox());
226 // FIXME: We could avoid dirtying the grid in some cases (e.g. if it's an ex plicitly positioned element). 226
227 dirtyGrid(); 227 if (style()->gridAutoFlow() != AutoFlowNone) {
228 // The grid needs to be recomputed as it might contain auto-placed items that will change their position.
229 dirtyGrid();
230 return;
231 }
232
233 const RenderBox* childBox = toRenderBox(child);
234 GridCoordinate coordinate = m_gridItemCoordinate.take(childBox);
235
236 for (size_t row = coordinate.rows.initialPositionIndex; row <= coordinate.ro ws.finalPositionIndex; ++row) {
237 for (size_t column = coordinate.columns.initialPositionIndex; column <= coordinate.columns.finalPositionIndex; ++column) {
238 GridCell& cell = m_grid[row][column];
239 cell.remove(cell.find(childBox));
240 }
241 }
228 } 242 }
229 243
230 void RenderGrid::styleDidChange(StyleDifference diff, const RenderStyle* oldStyl e) 244 void RenderGrid::styleDidChange(StyleDifference diff, const RenderStyle* oldStyl e)
231 { 245 {
232 RenderBlock::styleDidChange(diff, oldStyle); 246 RenderBlock::styleDidChange(diff, oldStyle);
233 if (!oldStyle) 247 if (!oldStyle)
234 return; 248 return;
235 249
236 // FIXME: The following checks could be narrowed down if we kept track of wh ich type of grid items we have: 250 // FIXME: The following checks could be narrowed down if we kept track of wh ich type of grid items we have:
237 // - explicit grid size changes impact negative explicitely positioned and a uto-placed grid items. 251 // - explicit grid size changes impact negative explicitely positioned and a uto-placed grid items.
(...skipping 1153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1391 if (isOutOfFlowPositioned()) 1405 if (isOutOfFlowPositioned())
1392 return "RenderGrid (positioned)"; 1406 return "RenderGrid (positioned)";
1393 if (isAnonymous()) 1407 if (isAnonymous())
1394 return "RenderGrid (generated)"; 1408 return "RenderGrid (generated)";
1395 if (isRelPositioned()) 1409 if (isRelPositioned())
1396 return "RenderGrid (relative positioned)"; 1410 return "RenderGrid (relative positioned)";
1397 return "RenderGrid"; 1411 return "RenderGrid";
1398 } 1412 }
1399 1413
1400 } // namespace WebCore 1414 } // namespace WebCore
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698