Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index b785dbb831ab272dfe7ac3d24318799177b0bdb2..44659f2f271fb4ae0c17e1e3d5d07fd995afda48 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -499,8 +499,7 @@ bool LayerTreeHostImpl::IsCurrentlyScrollingRoot() const { |
LayerImpl* scrolling_layer = CurrentlyScrollingLayer(); |
if (!scrolling_layer) |
return false; |
- return scrolling_layer == InnerViewportScrollLayer() || |
- scrolling_layer == OuterViewportScrollLayer(); |
+ return scrolling_layer == InnerViewportScrollLayer(); |
} |
bool LayerTreeHostImpl::IsCurrentlyScrollingLayerAt( |
@@ -2373,9 +2372,11 @@ LayerImpl* LayerTreeHostImpl::FindScrollLayerForDeviceViewportPoint( |
// notifications while preventing scroll updates from being unintentionally |
// forwarded to the main thread. |
if (!potentially_scrolling_layer_impl) |
- potentially_scrolling_layer_impl = OuterViewportScrollLayer() |
- ? OuterViewportScrollLayer() |
- : InnerViewportScrollLayer(); |
+ potentially_scrolling_layer_impl = InnerViewportScrollLayer(); |
+ |
+ // The inner viewport layer represents the viewport. |
+ if (potentially_scrolling_layer_impl == OuterViewportScrollLayer()) |
+ potentially_scrolling_layer_impl = InnerViewportScrollLayer(); |
return potentially_scrolling_layer_impl; |
} |
@@ -2466,8 +2467,9 @@ InputHandler::ScrollStatus LayerTreeHostImpl::ScrollAnimated( |
if (scroll_status == SCROLL_STARTED) { |
gfx::Vector2dF pending_delta = scroll_delta; |
for (LayerImpl* layer_impl = CurrentlyScrollingLayer(); layer_impl; |
- layer_impl = layer_impl->parent()) { |
- if (!layer_impl->scrollable()) |
+ layer_impl = NextLayerInScrollOrder(layer_impl)) { |
+ // The inner viewport layer represents the viewport. |
+ if (!layer_impl->scrollable() || layer_impl == OuterViewportScrollLayer()) |
continue; |
gfx::ScrollOffset current_offset = layer_impl->CurrentScrollOffset(); |
@@ -2743,10 +2745,10 @@ bool LayerTreeHostImpl::ScrollVerticallyByPage(const gfx::Point& viewport_point, |
ScrollDirection direction) { |
DCHECK(wheel_scrolling_); |
- for (LayerImpl* layer_impl = CurrentlyScrollingLayer(); |
- layer_impl; |
- layer_impl = layer_impl->parent()) { |
- if (!layer_impl->scrollable()) |
+ for (LayerImpl* layer_impl = CurrentlyScrollingLayer(); layer_impl; |
+ layer_impl = NextLayerInScrollOrder(layer_impl)) { |
+ // The inner viewport layer represents the viewport. |
+ if (!layer_impl->scrollable() || layer_impl == OuterViewportScrollLayer()) |
continue; |
if (!layer_impl->HasScrollbar(VERTICAL)) |
@@ -2810,7 +2812,6 @@ InputHandler::ScrollStatus LayerTreeHostImpl::FlingScrollBegin() { |
return SCROLL_IGNORED; |
bool currently_scrolling_viewport = |
- CurrentlyScrollingLayer() == OuterViewportScrollLayer() || |
CurrentlyScrollingLayer() == InnerViewportScrollLayer(); |
if (!wheel_scrolling_ && !currently_scrolling_viewport) { |
// Allow the fling to lock to the first layer that moves after the initial |
@@ -2908,13 +2909,8 @@ void LayerTreeHostImpl::PinchGestureBegin() { |
pinch_gesture_active_ = true; |
client_->RenewTreePriority(); |
pinch_gesture_end_should_clear_scrolling_layer_ = !CurrentlyScrollingLayer(); |
- if (active_tree_->OuterViewportScrollLayer()) { |
- active_tree_->SetCurrentlyScrollingLayer( |
- active_tree_->OuterViewportScrollLayer()); |
- } else { |
- active_tree_->SetCurrentlyScrollingLayer( |
- active_tree_->InnerViewportScrollLayer()); |
- } |
+ active_tree_->SetCurrentlyScrollingLayer( |
+ active_tree_->InnerViewportScrollLayer()); |
top_controls_manager_->PinchBegin(); |
} |