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

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

Issue 2552813002: Overlay scrollbars shouldn't fade out while mouse is over/near. (Closed)
Patch Set: unittests polished Created 4 years 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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 ApplyOpacity(1.f - progress); 65 ApplyOpacity(1.f - progress);
66 else 66 else
67 ApplyThumbThicknessScale(ThumbThicknessScaleAt(progress)); 67 ApplyThumbThicknessScale(ThumbThicknessScaleAt(progress));
68 68
69 client_->SetNeedsRedrawForScrollbarAnimation(); 69 client_->SetNeedsRedrawForScrollbarAnimation();
70 if (progress == 1.f) { 70 if (progress == 1.f) {
71 StopAnimation(); 71 StopAnimation();
72 if (current_animating_property_ == THICKNESS) { 72 if (current_animating_property_ == THICKNESS) {
73 thickness_change_ = NONE; 73 thickness_change_ = NONE;
74 SetCurrentAnimatingProperty(OPACITY); 74 SetCurrentAnimatingProperty(OPACITY);
75 PostDelayedAnimationTask(false); 75 if (!mouse_is_near_scrollbar_) {
aelias_OOO_until_Jul13 2016/12/07 22:35:09 nit: no braces for this in Chromium style
76 PostDelayedAnimationTask(false);
77 }
76 } 78 }
77 } 79 }
78 } 80 }
79 81
80 const base::TimeDelta& ScrollbarAnimationControllerThinning::Duration() { 82 const base::TimeDelta& ScrollbarAnimationControllerThinning::Duration() {
81 if (current_animating_property_ == OPACITY) 83 if (current_animating_property_ == OPACITY)
82 return fade_duration_; 84 return fade_duration_;
83 else 85 else
84 return thinning_duration_; 86 return thinning_duration_;
85 } 87 }
(...skipping 14 matching lines...) Expand all
100 102
101 captured_ = false; 103 captured_ = false;
102 StopAnimation(); 104 StopAnimation();
103 105
104 if (!mouse_is_near_scrollbar_) { 106 if (!mouse_is_near_scrollbar_) {
105 SetCurrentAnimatingProperty(THICKNESS); 107 SetCurrentAnimatingProperty(THICKNESS);
106 thickness_change_ = DECREASE; 108 thickness_change_ = DECREASE;
107 StartAnimation(); 109 StartAnimation();
108 } else { 110 } else {
109 SetCurrentAnimatingProperty(OPACITY); 111 SetCurrentAnimatingProperty(OPACITY);
110 PostDelayedAnimationTask(false);
111 } 112 }
112 } 113 }
113 114
114 void ScrollbarAnimationControllerThinning::DidMouseLeave() { 115 void ScrollbarAnimationControllerThinning::DidMouseLeave() {
115 if (!mouse_is_over_scrollbar_ && !mouse_is_near_scrollbar_) 116 if (!mouse_is_over_scrollbar_ && !mouse_is_near_scrollbar_)
116 return; 117 return;
117 118
118 mouse_is_over_scrollbar_ = false; 119 mouse_is_over_scrollbar_ = false;
119 mouse_is_near_scrollbar_ = false; 120 mouse_is_near_scrollbar_ = false;
120 121
121 if (captured_ || opacity_ == 0.0f) 122 if (captured_ || opacity_ == 0.0f)
122 return; 123 return;
123 124
124 thickness_change_ = DECREASE; 125 thickness_change_ = DECREASE;
125 SetCurrentAnimatingProperty(THICKNESS); 126 SetCurrentAnimatingProperty(THICKNESS);
126 StartAnimation(); 127 StartAnimation();
127 } 128 }
128 129
129 void ScrollbarAnimationControllerThinning::DidScrollUpdate(bool on_resize) { 130 void ScrollbarAnimationControllerThinning::DidScrollUpdate(bool on_resize) {
130 if (captured_) 131 if (captured_)
131 return; 132 return;
132 133
133 ScrollbarAnimationController::DidScrollUpdate(on_resize); 134 ScrollbarAnimationController::DidScrollUpdate(on_resize);
134 ApplyOpacity(1.f); 135 ApplyOpacity(1.f);
135 ApplyThumbThicknessScale(mouse_is_near_scrollbar_ ? 1.f 136 ApplyThumbThicknessScale(mouse_is_near_scrollbar_ ? 1.f
136 : kIdleThicknessScale); 137 : kIdleThicknessScale);
137 SetCurrentAnimatingProperty(OPACITY); 138 SetCurrentAnimatingProperty(OPACITY);
139
140 // Don't fade out the scrollbar when mouse is near.
141 if (mouse_is_near_scrollbar_)
142 StopAnimation();
143 }
144
145 void ScrollbarAnimationControllerThinning::DidScrollEnd() {
146 ScrollbarAnimationController::DidScrollEnd();
147
148 // Don't fade out the scrollbar when mouse is near.
149 if (mouse_is_near_scrollbar_)
150 StopAnimation();
138 } 151 }
139 152
140 void ScrollbarAnimationControllerThinning::DidMouseMoveNear(float distance) { 153 void ScrollbarAnimationControllerThinning::DidMouseMoveNear(float distance) {
141 bool mouse_is_over_scrollbar = distance == 0.0f; 154 bool mouse_is_over_scrollbar = distance == 0.0f;
142 bool mouse_is_near_scrollbar = 155 bool mouse_is_near_scrollbar =
143 distance < mouse_move_distance_to_trigger_animation_; 156 distance < mouse_move_distance_to_trigger_animation_;
144 157
145 if (captured_ || opacity_ == 0.0f) { 158 if (captured_ || opacity_ == 0.0f) {
146 mouse_is_near_scrollbar_ = mouse_is_near_scrollbar; 159 mouse_is_near_scrollbar_ = mouse_is_near_scrollbar;
147 mouse_is_over_scrollbar_ = mouse_is_over_scrollbar; 160 mouse_is_over_scrollbar_ = mouse_is_over_scrollbar;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 if (current_animating_property_ == property) 256 if (current_animating_property_ == property)
244 return; 257 return;
245 258
246 StopAnimation(); 259 StopAnimation();
247 current_animating_property_ = property; 260 current_animating_property_ = property;
248 if (current_animating_property_ == THICKNESS) 261 if (current_animating_property_ == THICKNESS)
249 ApplyOpacity(1.f); 262 ApplyOpacity(1.f);
250 } 263 }
251 264
252 } // namespace cc 265 } // 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