Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 1af7727bbc02cd8287440d3fb2c581c4b6560ec8..546c87d7468c0068eec5f0157d7455bd0a870b2b 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 = |
aelias_OOO_until_Jul13
2014/09/22 06:53:01
This will reset to false if any later line is fals
MuVen
2014/09/22 14:02:27
True, MissRead the logic :( Done.
|
+ 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(); |
@@ -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. |