Index: Source/core/rendering/LayoutRectRecorder.cpp |
diff --git a/Source/core/rendering/LayoutRectRecorder.cpp b/Source/core/rendering/LayoutRectRecorder.cpp |
index 90c50d32884cfc03bf5ddfd6ece5187b595f0f35..c2a13bb4eac14c7f712fac2d670aa28a39e87246 100644 |
--- a/Source/core/rendering/LayoutRectRecorder.cpp |
+++ b/Source/core/rendering/LayoutRectRecorder.cpp |
@@ -51,12 +51,19 @@ LayoutRectRecorder::LayoutRectRecorder(RenderObject& object, bool skipRecording) |
if (m_skipRecording) |
return; |
- if (!m_object.layoutDidGetCalled()) |
- m_object.setOldRepaintRect(m_object.clippedOverflowRectForRepaint(m_object.containerForRepaint())); |
+ if (!m_object.layoutDidGetCalled()) { |
+ RenderLayerModelObject* containerForRepaint = m_object.containerForRepaint(); |
+ m_object.setOldRepaintRect(m_object.clippedOverflowRectForRepaint(containerForRepaint)); |
+ |
+ if (m_object.hasOutline()) |
+ m_object.setOldOutlineRect(m_object.outlineBoundsForRepaint(containerForRepaint)); |
+ } |
// If should do repaint was set previously make sure we don't accidentally unset it. |
if (!m_object.shouldDoFullRepaintAfterLayout()) |
m_object.setShouldDoFullRepaintAfterLayout(m_object.selfNeedsLayout()); |
+ if (m_object.needsPositionedMovementLayoutOnly()) |
+ m_object.setOnlyNeededPositionedMovementLayout(true); |
m_object.setLayoutDidGetCalled(true); |
} |
@@ -69,7 +76,11 @@ LayoutRectRecorder::~LayoutRectRecorder() |
return; |
// Note, we don't store the repaint container because it can change during layout. |
- m_object.setNewRepaintRect(m_object.clippedOverflowRectForRepaint(m_object.containerForRepaint())); |
+ RenderLayerModelObject* containerForRepaint = m_object.containerForRepaint(); |
+ m_object.setNewRepaintRect(m_object.clippedOverflowRectForRepaint(containerForRepaint)); |
+ |
+ if (m_object.hasOutline()) |
+ m_object.setNewOutlineRect(m_object.outlineBoundsForRepaint(containerForRepaint)); |
} |
} // namespace WebCore |