Index: third_party/WebKit/Source/core/layout/LayoutObject.cpp |
diff --git a/third_party/WebKit/Source/core/layout/LayoutObject.cpp b/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
index d2a508f42f5dfed164799736883fbe6cfdc30402..ee0f4999ab6fef310397daa278bbde494710465f 100644 |
--- a/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
+++ b/third_party/WebKit/Source/core/layout/LayoutObject.cpp |
@@ -619,8 +619,13 @@ PaintLayer* LayoutObject::paintingLayer() const { |
current = current->isFloating() ? current->containingBlock() |
: current->paintInvalidationParent()) { |
if (current->hasLayer() && |
- toLayoutBoxModelObject(current)->layer()->isSelfPaintingLayer()) |
+ toLayoutBoxModelObject(current)->layer()->isSelfPaintingLayer()) { |
return toLayoutBoxModelObject(current)->layer(); |
+ } else if (current->isColumnSpanAll()) { |
+ // Column spanners paint through their multicolumn containers which can |
+ // be accessed through the associated out-of-flow placeholder's parent. |
+ current = current->spannerPlaceholder(); |
+ } |
} |
// TODO(crbug.com/365897): we should get rid of detached layout subtrees, at |
// which point this code should not be reached. |
@@ -1190,14 +1195,8 @@ void LayoutObject::invalidatePaintOfSubtreesIfNeeded( |
const PaintInvalidationState& childPaintInvalidationState) { |
DCHECK(!RuntimeEnabledFeatures::slimmingPaintInvalidationEnabled()); |
- for (LayoutObject* child = slowFirstChild(); child; |
- child = child->nextSibling()) { |
- // Column spanners are invalidated through their placeholders. See |
- // LayoutMultiColumnSpannerPlaceholder::invalidatePaintOfSubtreesIfNeeded(). |
- if (child->isColumnSpanAll()) |
- continue; |
+ for (auto* child = slowFirstChild(); child; child = child->nextSibling()) |
child->invalidateTreeIfNeeded(childPaintInvalidationState); |
- } |
} |
LayoutRect LayoutObject::selectionRectInViewCoordinates() const { |
@@ -2554,8 +2553,6 @@ LayoutObject* LayoutObject::container(const LayoutBoxModelObject* ancestor, |
inline LayoutObject* LayoutObject::paintInvalidationParent() const { |
if (isLayoutView()) |
return LayoutAPIShim::layoutObjectFrom(frame()->ownerLayoutItem()); |
- if (isColumnSpanAll()) |
- return spannerPlaceholder(); |
return parent(); |
} |