| Index: third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp b/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
|
| index 04b7164865fc72da904eeb527218892f4025010c..43dddd801c25a8668412524560343c7968f95973 100644
|
| --- a/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
|
| @@ -309,7 +309,7 @@ void PaintInvalidationState::updateForNormalChildren()
|
| m_paintOffset -= toLayoutBox(m_currentObject).locationOffset();
|
| }
|
|
|
| - if (!m_currentObject.hasOverflowClip())
|
| + if (!m_currentObject.hasClipRelatedProperty())
|
| return;
|
|
|
| const LayoutBox& box = toLayoutBox(m_currentObject);
|
| @@ -319,8 +319,11 @@ void PaintInvalidationState::updateForNormalChildren()
|
| if (box == m_paintInvalidationContainer && box.scrollsOverflow()) {
|
| ASSERT(!m_clipped); // The box establishes paint invalidation container, so no m_clipped inherited.
|
| } else {
|
| - addClipRectRelativeToPaintOffset(box.overflowClipRect(LayoutPoint()));
|
| - m_paintOffset -= box.scrolledContentOffset();
|
| + // This won't work fully correctly for fixed-position elements, who should receive CSS clip but for whom the current object
|
| + // is not in the containing block chain.
|
| + addClipRectRelativeToPaintOffset(box.clippingRect());
|
| + if (box.hasOverflowClip())
|
| + m_paintOffset -= box.scrolledContentOffset();
|
| }
|
|
|
| // FIXME: <http://bugs.webkit.org/show_bug.cgi?id=13443> Apply control clip if present.
|
|
|