| Index: Source/web/PinchViewports.cpp
|
| diff --git a/Source/web/PinchViewports.cpp b/Source/web/PinchViewports.cpp
|
| index 9f9f06a19c2ba39962a2706dbf21bf815dd140fd..4e612b0de91f269034b3a727973577cc912eb28a 100644
|
| --- a/Source/web/PinchViewports.cpp
|
| +++ b/Source/web/PinchViewports.cpp
|
| @@ -53,29 +53,32 @@ PassOwnPtr<PinchViewports> PinchViewports::create(WebViewImpl* owner)
|
|
|
| PinchViewports::PinchViewports(WebViewImpl* owner)
|
| : m_owner(owner)
|
| - , m_innerViewportClipLayer(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
|
| + , m_innerViewportContainerLayer(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
|
| , m_pageScaleLayer(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
|
| , m_innerViewportScrollLayer(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
|
| , m_overlayScrollbarHorizontal(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
|
| , m_overlayScrollbarVertical(GraphicsLayer::create(m_owner->graphicsLayerFactory(), this))
|
| {
|
| - m_innerViewportClipLayer->setMasksToBounds(true);
|
| - m_innerViewportClipLayer->platformLayer()->setIsContainerForFixedPositionLayers(true);
|
| + m_innerViewportContainerLayer->platformLayer()->setIsContainerForFixedPositionLayers(true);
|
| + // No need for the inner viewport to clip, since the compositing
|
| + // surface takes care of it -- and clipping here would interfere with
|
| + // dynamically-sized viewports on Android.
|
| + m_innerViewportContainerLayer->setMasksToBounds(false);
|
|
|
| m_innerViewportScrollLayer->platformLayer()->setScrollable(true);
|
|
|
| #ifndef NDEBUG
|
| - m_innerViewportClipLayer->setName("inner viewport clip layer");
|
| + m_innerViewportContainerLayer->setName("inner viewport container layer");
|
| m_pageScaleLayer->setName("page scale layer");
|
| m_innerViewportScrollLayer->setName("inner viewport scroll layer");
|
| m_overlayScrollbarHorizontal->setName("overlay scrollbar horizontal");
|
| m_overlayScrollbarVertical->setName("overlay scrollbar vertical");
|
| #endif
|
|
|
| - m_innerViewportClipLayer->addChild(m_pageScaleLayer.get());
|
| + m_innerViewportContainerLayer->addChild(m_pageScaleLayer.get());
|
| m_pageScaleLayer->addChild(m_innerViewportScrollLayer.get());
|
| - m_innerViewportClipLayer->addChild(m_overlayScrollbarHorizontal.get());
|
| - m_innerViewportClipLayer->addChild(m_overlayScrollbarVertical.get());
|
| + m_innerViewportContainerLayer->addChild(m_overlayScrollbarHorizontal.get());
|
| + m_innerViewportContainerLayer->addChild(m_overlayScrollbarVertical.get());
|
|
|
| // Setup the inner viewport overlay scrollbars.
|
| setupScrollbar(WebScrollbar::Horizontal);
|
| @@ -86,7 +89,7 @@ PinchViewports::~PinchViewports() { }
|
|
|
| void PinchViewports::setViewportSize(const WebCore::IntSize& newSize)
|
| {
|
| - m_innerViewportClipLayer->setSize(newSize);
|
| + m_innerViewportContainerLayer->setSize(newSize);
|
|
|
| // Need to re-compute sizes for the overlay scrollbars.
|
| setupScrollbar(WebScrollbar::Horizontal);
|
| @@ -97,11 +100,11 @@ void PinchViewports::setViewportSize(const WebCore::IntSize& newSize)
|
| // the inner/outer viewport fixed-position model for pinch zoom. When finished,
|
| // the tree will look like this (with * denoting added layers):
|
| //
|
| -// *innerViewportClipLayer (fixed pos container)
|
| +// *innerViewportContainerLayer (fixed pos container)
|
| // +- *pageScaleLayer
|
| // | +- *innerViewportScrollLayer
|
| // | +-- overflowControlsHostLayer (root layer)
|
| -// | +-- outerViewportClipLayer (fixed pos container) [frame clip layer in RenderLayerCompositor]
|
| +// | +-- outerViewportContainerLayer (fixed pos container) [frame container layer in RenderLayerCompositor]
|
| // | | +-- outerViewportScrollLayer [frame scroll layer in RenderLayerCompositor]
|
| // | | +-- content layers ...
|
| // | +-- horizontal ScrollbarLayer (non-overlay)
|
| @@ -142,10 +145,10 @@ void PinchViewports::setupScrollbar(WebScrollbar::Orientation orientation)
|
|
|
| const int overlayScrollbarThickness = m_owner->settingsImpl()->pinchOverlayScrollbarThickness();
|
|
|
| - int xPosition = isHorizontal ? 0 : m_innerViewportClipLayer->size().width() - overlayScrollbarThickness;
|
| - int yPosition = isHorizontal ? m_innerViewportClipLayer->size().height() - overlayScrollbarThickness : 0;
|
| - int width = isHorizontal ? m_innerViewportClipLayer->size().width() - overlayScrollbarThickness : overlayScrollbarThickness;
|
| - int height = isHorizontal ? overlayScrollbarThickness : m_innerViewportClipLayer->size().height() - overlayScrollbarThickness;
|
| + int xPosition = isHorizontal ? 0 : m_innerViewportContainerLayer->size().width() - overlayScrollbarThickness;
|
| + int yPosition = isHorizontal ? m_innerViewportContainerLayer->size().height() - overlayScrollbarThickness : 0;
|
| + int width = isHorizontal ? m_innerViewportContainerLayer->size().width() - overlayScrollbarThickness : overlayScrollbarThickness;
|
| + int height = isHorizontal ? overlayScrollbarThickness : m_innerViewportContainerLayer->size().height() - overlayScrollbarThickness;
|
|
|
| scrollbarGraphicsLayer->setPosition(WebCore::IntPoint(xPosition, yPosition));
|
| scrollbarGraphicsLayer->setSize(WebCore::IntSize(width, height));
|
| @@ -159,7 +162,7 @@ void PinchViewports::registerViewportLayersWithTreeView(WebLayerTreeView* layerT
|
| WebCore::RenderLayerCompositor* compositor = m_owner->compositor();
|
| ASSERT(compositor);
|
| layerTreeView->registerPinchViewportLayers(
|
| - m_innerViewportClipLayer->platformLayer(),
|
| + m_innerViewportContainerLayer->platformLayer(),
|
| m_pageScaleLayer->platformLayer(),
|
| m_innerViewportScrollLayer->platformLayer(),
|
| compositor->scrollLayer()->platformLayer(),
|
|
|