Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: cc/input/scrollbar_animation_controller_thinning.cc

Issue 2453553003: Disable overlay scrollbars in Blink when hidden by the compositor. (Closed)
Patch Set: Rebase Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/input/scrollbar_animation_controller_thinning.h" 5 #include "cc/input/scrollbar_animation_controller_thinning.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "cc/layers/layer_impl.h" 9 #include "cc/layers/layer_impl.h"
10 #include "cc/layers/scrollbar_layer_impl_base.h" 10 #include "cc/layers/scrollbar_layer_impl_base.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 157
158 if (mouse_is_near_scrollbar_ != mouse_is_near_scrollbar) { 158 if (mouse_is_near_scrollbar_ != mouse_is_near_scrollbar) {
159 mouse_is_near_scrollbar_ = mouse_is_near_scrollbar; 159 mouse_is_near_scrollbar_ = mouse_is_near_scrollbar;
160 thickness_change_ = mouse_is_near_scrollbar_ ? INCREASE : DECREASE; 160 thickness_change_ = mouse_is_near_scrollbar_ ? INCREASE : DECREASE;
161 } 161 }
162 162
163 SetCurrentAnimatingProperty(THICKNESS); 163 SetCurrentAnimatingProperty(THICKNESS);
164 StartAnimation(); 164 StartAnimation();
165 } 165 }
166 166
167 bool ScrollbarAnimationControllerThinning::ScrollbarsHidden() const {
168 return opacity_ == 0.0f;
169 }
170
167 float ScrollbarAnimationControllerThinning::ThumbThicknessScaleAt( 171 float ScrollbarAnimationControllerThinning::ThumbThicknessScaleAt(
168 float progress) { 172 float progress) {
169 if (thickness_change_ == NONE) 173 if (thickness_change_ == NONE)
170 return mouse_is_near_scrollbar_ ? 1.f : kIdleThicknessScale; 174 return mouse_is_near_scrollbar_ ? 1.f : kIdleThicknessScale;
171 float factor = thickness_change_ == INCREASE ? progress : (1.f - progress); 175 float factor = thickness_change_ == INCREASE ? progress : (1.f - progress);
172 return ((1.f - kIdleThicknessScale) * factor) + kIdleThicknessScale; 176 return ((1.f - kIdleThicknessScale) * factor) + kIdleThicknessScale;
173 } 177 }
174 178
175 float ScrollbarAnimationControllerThinning::AdjustScale( 179 float ScrollbarAnimationControllerThinning::AdjustScale(
176 float new_value, 180 float new_value,
(...skipping 29 matching lines...) Expand all
206 // be overwritten anyway when property trees are pushed. 210 // be overwritten anyway when property trees are pushed.
207 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, 211 if (property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT,
208 scrollbar->id())) { 212 scrollbar->id())) {
209 property_trees->effect_tree.OnOpacityAnimated( 213 property_trees->effect_tree.OnOpacityAnimated(
210 effective_opacity, 214 effective_opacity,
211 property_trees->effect_id_to_index_map[scrollbar->id()], 215 property_trees->effect_id_to_index_map[scrollbar->id()],
212 scrollbar->layer_tree_impl()); 216 scrollbar->layer_tree_impl());
213 } 217 }
214 } 218 }
215 219
220 bool previouslyVisible = opacity_ > 0.0f;
221 bool currentlyVisible = opacity > 0.0f;
222
216 opacity_ = opacity; 223 opacity_ = opacity;
224
225 if (previouslyVisible != currentlyVisible)
226 client_->DidChangeScrollbarVisibility();
217 } 227 }
218 228
219 void ScrollbarAnimationControllerThinning::ApplyThumbThicknessScale( 229 void ScrollbarAnimationControllerThinning::ApplyThumbThicknessScale(
220 float thumb_thickness_scale) { 230 float thumb_thickness_scale) {
221 for (ScrollbarLayerImplBase* scrollbar : Scrollbars()) { 231 for (ScrollbarLayerImplBase* scrollbar : Scrollbars()) {
222 if (!scrollbar->is_overlay_scrollbar()) 232 if (!scrollbar->is_overlay_scrollbar())
223 continue; 233 continue;
224 234
225 scrollbar->SetThumbThicknessScaleFactor(AdjustScale( 235 scrollbar->SetThumbThicknessScaleFactor(AdjustScale(
226 thumb_thickness_scale, scrollbar->thumb_thickness_scale_factor(), 236 thumb_thickness_scale, scrollbar->thumb_thickness_scale_factor(),
227 thickness_change_, kIdleThicknessScale, 1)); 237 thickness_change_, kIdleThicknessScale, 1));
228 } 238 }
229 } 239 }
230 240
231 void ScrollbarAnimationControllerThinning::SetCurrentAnimatingProperty( 241 void ScrollbarAnimationControllerThinning::SetCurrentAnimatingProperty(
232 AnimatingProperty property) { 242 AnimatingProperty property) {
233 if (current_animating_property_ == property) 243 if (current_animating_property_ == property)
234 return; 244 return;
235 245
236 StopAnimation(); 246 StopAnimation();
237 current_animating_property_ = property; 247 current_animating_property_ = property;
238 if (current_animating_property_ == THICKNESS) 248 if (current_animating_property_ == THICKNESS)
239 ApplyOpacity(1.f); 249 ApplyOpacity(1.f);
240 } 250 }
241 251
242 } // namespace cc 252 } // namespace cc
OLDNEW
« no previous file with comments | « cc/input/scrollbar_animation_controller_thinning.h ('k') | cc/input/scrollbar_animation_controller_thinning_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698