| 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();
|
|
|