Index: Source/core/page/scrolling/ScrollingCoordinator.cpp |
diff --git a/Source/core/page/scrolling/ScrollingCoordinator.cpp b/Source/core/page/scrolling/ScrollingCoordinator.cpp |
index a0ef870fad59d9896b57570a6e806bd48bd87d5c..08b970f4ebf09cc52b4c693ca42b500b70eaf11d 100644 |
--- a/Source/core/page/scrolling/ScrollingCoordinator.cpp |
+++ b/Source/core/page/scrolling/ScrollingCoordinator.cpp |
@@ -158,13 +158,25 @@ void ScrollingCoordinator::updateAfterCompositingChangeIfNeeded() |
// The mainFrame view doesn't get included in the FrameTree below, so we |
// update its size separately. |
if (WebLayer* scrollingWebLayer = frameView ? toWebLayer(frameView->layerForScrolling()) : 0) { |
- // If there is a fullscreen element, set the scroll bounds to empty so the main frame won't scroll. |
+ // If there is a non-root fullscreen element, prevent the main frame |
+ // from scrolling. |
Document* mainFrameDocument = m_page->deprecatedLocalMainFrame()->document(); |
Element* fullscreenElement = Fullscreen::fullscreenElementFrom(*mainFrameDocument); |
- if (fullscreenElement && fullscreenElement != mainFrameDocument->documentElement()) |
- scrollingWebLayer->setBounds(IntSize()); |
- else |
- scrollingWebLayer->setBounds(frameView->contentsSize()); |
+ if (fullscreenElement && fullscreenElement != mainFrameDocument->documentElement()) { |
+ if (m_page->settings().pinchVirtualViewportEnabled()) { |
+ scrollingWebLayer->setUserScrollable(false, false); |
+ toWebLayer(m_page->frameHost().pinchViewport().innerViewportScrollLayer())->setUserScrollable(false, false); |
Rick Byers
2014/10/09 14:28:52
ScrollView::setScrollbarModes can override this.
aelias_OOO_until_Jul13
2014/10/10 00:58:50
Good point. I overrode the userInputScrollable ge
|
+ } else { |
+ scrollingWebLayer->setBounds(IntSize()); |
+ } |
+ } else { |
+ if (m_page->settings().pinchVirtualViewportEnabled()) { |
+ scrollingWebLayer->setUserScrollable(frameView->userInputScrollable(HorizontalScrollbar), frameView->userInputScrollable(VerticalScrollbar)); |
+ toWebLayer(m_page->frameHost().pinchViewport().innerViewportScrollLayer())->setUserScrollable(true, true); |
+ } else { |
+ scrollingWebLayer->setBounds(frameView->contentsSize()); |
+ } |
+ } |
} |
const FrameTree& tree = m_page->mainFrame()->tree(); |