Index: third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
index 656b4effafa988901318f24c2df30272ccbf154b..b79cdb52ae4bc24963782bc7a981484cbaa5a080 100644 |
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp |
@@ -682,6 +682,17 @@ bool PaintLayerScrollableArea::updateAfterLayout(SubtreeLayoutScope* delayedLayo |
m_inOverflowRelayout = true; |
if (delayedLayoutScope) { |
delayedLayoutScope->setNeedsLayout(&box(), LayoutInvalidationReason::ScrollbarChanged); |
+ // Since we can't pass true to layoutBlock to force relaying out the children, mark them explicitly. |
+ // They do have to be laid out again because their available width has now changed. |
+ for (LayoutObject* child = box().slowFirstChild(); child; child = child->nextSibling()) |
+ delayedLayoutScope->setNeedsLayout(child, LayoutInvalidationReason::ScrollbarChanged); |
+ TrackedLayoutBoxListHashSet* positionedDescendants = box().isLayoutBlock() ? toLayoutBlock(box()).positionedObjects() : 0; |
mstensho (USE GERRIT)
2016/03/17 21:23:36
0 -> nullptr
|
+ if (positionedDescendants) { |
+ for (auto* positionedObject : *positionedDescendants) { |
+ delayedLayoutScope->setNeedsLayout(positionedObject, LayoutInvalidationReason::ScrollbarChanged); |
+ } |
mstensho (USE GERRIT)
2016/03/17 21:23:36
Superfluous braces.
|
+ } |
+ |
didMarkForDelayedLayout = true; |
} else { |
SubtreeLayoutScope layoutScope(box()); |