Index: cc/trees/layer_tree_impl.cc |
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
index 041c5fea5186105c11c86371cea45ed66c3ee206..9cda9535a277934d99fe0e3cdf9993515bb1c5cd 100644 |
--- a/cc/trees/layer_tree_impl.cc |
+++ b/cc/trees/layer_tree_impl.cc |
@@ -395,6 +395,29 @@ void LayerTreeImpl::DidUpdatePageScale() { |
} |
ForceScrollbarParameterUpdateAfterScaleChange(page_scale_layer()); |
+ |
+ HideInnerViewportScrollbarsIfNearMinimumScale(); |
+} |
+ |
+void LayerTreeImpl::HideInnerViewportScrollbarsIfNearMinimumScale() { |
+ if (!InnerViewportContainerLayer()) |
+ return; |
+ |
+ LayerImpl::ScrollbarSet* scrollbars = |
+ InnerViewportContainerLayer()->scrollbars(); |
+ |
+ if (!scrollbars) |
+ return; |
+ |
+ for (LayerImpl::ScrollbarSet::iterator it = scrollbars->begin(); |
+ it != scrollbars->end(); |
+ ++it) { |
+ ScrollbarLayerImplBase* scrollbar = *it; |
+ float minimum_scale_to_show_at = |
+ min_page_scale_factor() + settings().scrollbar_show_scale_threshold; |
aelias_OOO_until_Jul13
2015/01/27 19:35:05
I generally prefer scales to be multiplied togethe
bokan
2015/01/27 20:42:01
Done.
|
+ scrollbar->SetHideLayerAndSubtree( |
+ current_page_scale_factor() < minimum_scale_to_show_at); |
+ } |
} |
SyncedProperty<ScaleGroup>* LayerTreeImpl::page_scale_factor() { |
@@ -476,6 +499,8 @@ void LayerTreeImpl::SetViewportLayersFromIds( |
DCHECK(outer_viewport_scroll_layer_ || |
outer_viewport_scroll_layer_id == Layer::INVALID_ID); |
+ HideInnerViewportScrollbarsIfNearMinimumScale(); |
+ |
if (!root_layer_scroll_offset_delegate_) |
return; |