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 f394d52494ea5750809c128277c1f25afb07d363..4a846ec43df25b2f0bd1c3582a9e8de6a7781b9e 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -2664,6 +2664,11 @@ void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, |
TRACE_EVENT0("cc", "LayerTreeHostImpl::PinchGestureUpdate"); |
+ // For a moment the scroll offset ends up being outside of the max range. This |
+ // confuses the delegate so we switch it off till after we're done processing |
+ // the pinch update. |
+ active_tree_->SetRootLayerScrollOffsetDelegate(NULL); |
+ |
// Keep the center-of-pinch anchor specified by (x, y) in a stable |
// position over the course of the magnify. |
float page_scale_delta = active_tree_->page_scale_delta(); |
@@ -2697,6 +2702,9 @@ void LayerTreeHostImpl::PinchGestureUpdate(float magnify_delta, |
InnerViewportScrollLayer()->ClampScrollToMaxScrollOffset(); |
} |
+ active_tree_->SetRootLayerScrollOffsetDelegate( |
+ root_layer_scroll_offset_delegate_); |
+ |
client_->SetNeedsCommitOnImplThread(); |
SetNeedsRedraw(); |
client_->RenewTreePriority(); |