Chromium Code Reviews| 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(); |