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

Unified Diff: Source/core/rendering/RenderBox.cpp

Issue 21205004: [CSS Grid Layout] Store m_grid across layout (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Updated change after Ojan's review Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/rendering/RenderBox.h ('k') | Source/core/rendering/RenderGrid.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/rendering/RenderBox.cpp
diff --git a/Source/core/rendering/RenderBox.cpp b/Source/core/rendering/RenderBox.cpp
index e596013d7a2174c3b49d1cca59f51eb15610ff80..bbdb895dfe1935548f92988b1a0e72405ea9affd 100644
--- a/Source/core/rendering/RenderBox.cpp
+++ b/Source/core/rendering/RenderBox.cpp
@@ -47,6 +47,7 @@
#include "core/rendering/RenderFlexibleBox.h"
#include "core/rendering/RenderFlowThread.h"
#include "core/rendering/RenderGeometryMap.h"
+#include "core/rendering/RenderGrid.h"
#include "core/rendering/RenderInline.h"
#include "core/rendering/RenderLayer.h"
#include "core/rendering/RenderLayerCompositor.h"
@@ -305,6 +306,7 @@ void RenderBox::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle
}
updateShapeOutsideInfoAfterStyleChange(style()->shapeOutside(), oldStyle ? oldStyle->shapeOutside() : 0);
+ updateGridPositionAfterStyleChange(oldStyle);
}
void RenderBox::updateShapeOutsideInfoAfterStyleChange(const ShapeValue* shapeOutside, const ShapeValue* oldShapeOutside)
@@ -321,6 +323,23 @@ void RenderBox::updateShapeOutsideInfoAfterStyleChange(const ShapeValue* shapeOu
}
}
+void RenderBox::updateGridPositionAfterStyleChange(const RenderStyle* oldStyle)
+{
+ if (!oldStyle || !parent() || !parent()->isRenderGrid())
+ return;
+
+ if (oldStyle->gridColumnStart() == style()->gridColumnStart()
+ && oldStyle->gridColumnEnd() == style()->gridColumnEnd()
+ && oldStyle->gridRowStart() == style()->gridRowStart()
+ && oldStyle->gridRowEnd() == style()->gridRowEnd()
+ && oldStyle->order() == style()->order())
+ return;
+
+ // It should be possible to not dirty the grid in some cases (like moving an explicitly placed grid item).
+ // For now, it's more simple to just always recompute the grid.
+ toRenderGrid(parent())->dirtyGrid();
+}
+
void RenderBox::updateFromStyle()
{
RenderBoxModelObject::updateFromStyle();
« no previous file with comments | « Source/core/rendering/RenderBox.h ('k') | Source/core/rendering/RenderGrid.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698