Chromium Code Reviews| 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 1cd732acbdd6b9d5356aeb6168ea7a8ff877ed09..bf88c1237283369de6b6ff31178f30bd069b5bf5 100644 |
| --- a/cc/trees/layer_tree_host_impl.cc |
| +++ b/cc/trees/layer_tree_host_impl.cc |
| @@ -3015,12 +3015,19 @@ void LayerTreeHostImpl::DistributeScrollDelta(ScrollState* scroll_state) { |
| if (scroll_node) { |
| for (; scroll_tree.parent(scroll_node); |
| scroll_node = scroll_tree.parent(scroll_node)) { |
| - // Skip the outer viewport scroll layer so that we try to scroll the |
| - // viewport only once. i.e. The inner viewport layer represents the |
| - // viewport. |
| - if (!scroll_node->scrollable || |
| - scroll_node->is_outer_viewport_scroll_layer) |
| + if (scroll_node->is_outer_viewport_scroll_layer) { |
| + // Don't chain scrolls past the outer viewport scroll layer. Once we |
| + // reach that, we should scroll the viewport, which is represented by |
| + // the inner viewport scroll layer. |
| + ScrollNode* inner_scroll_node = |
|
tdresser
2016/08/15 13:37:41
Maybe inner_viewport_scroll_node?
bokan
2016/08/20 22:13:58
Done.
|
| + scroll_tree.Node(InnerViewportScrollLayer()->scroll_tree_index()); |
| + current_scroll_chain.push_front(inner_scroll_node); |
| + break; |
| + } |
| + |
| + if (!scroll_node->scrollable) |
| continue; |
| + |
| current_scroll_chain.push_front(scroll_node); |
| } |
| } |