Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 5b39eb0e36262c2299be2fd73522def8ab8c897c..5c9eada05addd2181ad8ea1a5d9a46a83d15bff2 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -1275,17 +1275,25 @@ void LayerImpl::SetScrollbarPosition(ScrollbarLayerImplBase* scrollbar_layer, |
current_offset.Scale(layer_tree_impl()->total_page_scale_factor()); |
} |
- scrollbar_layer->SetVerticalAdjust(scrollbar_clip_layer->bounds_delta().y()); |
+ bool scrollbar_needs_animation = false; |
+ scrollbar_needs_animation |= scrollbar_layer->SetVerticalAdjust( |
+ scrollbar_clip_layer->bounds_delta().y()); |
if (scrollbar_layer->orientation() == HORIZONTAL) { |
float visible_ratio = clip_rect.width() / scroll_rect.width(); |
- scrollbar_layer->SetCurrentPos(current_offset.x()); |
- scrollbar_layer->SetMaximum(scroll_rect.width() - clip_rect.width()); |
- scrollbar_layer->SetVisibleToTotalLengthRatio(visible_ratio); |
+ scrollbar_needs_animation |= |
+ scrollbar_layer->SetCurrentPos(current_offset.x()); |
+ scrollbar_needs_animation |= |
+ scrollbar_layer->SetMaximum(scroll_rect.width() - clip_rect.width()); |
+ scrollbar_needs_animation |= |
+ scrollbar_layer->SetVisibleToTotalLengthRatio(visible_ratio); |
} else { |
float visible_ratio = clip_rect.height() / scroll_rect.height(); |
- scrollbar_layer->SetCurrentPos(current_offset.y()); |
- scrollbar_layer->SetMaximum(scroll_rect.height() - clip_rect.height()); |
- scrollbar_layer->SetVisibleToTotalLengthRatio(visible_ratio); |
+ scrollbar_needs_animation |= |
+ scrollbar_layer->SetCurrentPos(current_offset.y()); |
+ scrollbar_needs_animation |= |
+ scrollbar_layer->SetMaximum(scroll_rect.height() - clip_rect.height()); |
+ scrollbar_needs_animation |= |
+ scrollbar_layer->SetVisibleToTotalLengthRatio(visible_ratio); |
} |
layer_tree_impl()->set_needs_update_draw_properties(); |
danakj
2014/09/22 14:41:25
Maybe for a follow up, but what happens if you als
|
@@ -1293,7 +1301,7 @@ void LayerImpl::SetScrollbarPosition(ScrollbarLayerImplBase* scrollbar_layer, |
// activate for every scroll on the main frame, not just the scrolls that move |
// the pinch virtual viewport (i.e. trigger from either inner or outer |
// viewport). |
- if (scrollbar_animation_controller_) { |
+ if (scrollbar_animation_controller_ && scrollbar_needs_animation) { |
// When both non-overlay and overlay scrollbars are both present, don't |
// animate the overlay scrollbars when page scale factor is at the min. |
// Non-overlay scrollbars also shouldn't trigger animations. |