Index: Source/core/page/scrolling/ScrollingCoordinator.cpp |
diff --git a/Source/core/page/scrolling/ScrollingCoordinator.cpp b/Source/core/page/scrolling/ScrollingCoordinator.cpp |
index bf47e86c9b30b9feecee4aaa3e0d7d8879d5a66f..04a2f1fd6be21dd87b41194b39d71cf2a18f12fa 100644 |
--- a/Source/core/page/scrolling/ScrollingCoordinator.cpp |
+++ b/Source/core/page/scrolling/ScrollingCoordinator.cpp |
@@ -119,6 +119,18 @@ void ScrollingCoordinator::notifyLayoutUpdated() |
m_shouldScrollOnMainThreadDirty = true; |
} |
+void ScrollingCoordinator::scrollableAreasDidChange() |
+{ |
+ // Layout may update scrollable area bounding boxes. It also sets the same dirty |
+ // flag making this one redundant (See |ScrollingCoordinator::notifyLayoutUpdated|). |
+ // So if layout is expected, ignore this call allowing scrolling coordinator |
+ // to be notified post-layout to recompute gesture regions. |
+ if (!m_page->deprecatedLocalMainFrame()->view() || m_page->deprecatedLocalMainFrame()->view()->needsLayout()) |
+ return; |
+ |
+ m_scrollGestureRegionIsDirty = true; |
+} |
+ |
void ScrollingCoordinator::updateAfterCompositingChangeIfNeeded() |
{ |
if (!m_page->mainFrame()->isLocalFrame()) |