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

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

Issue 2748343004: Revert of Show Overlay Scrollbar when GestureScrollUpdate (Closed)
Patch Set: rebase Created 3 years, 9 months 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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.h" 5 #include "cc/input/scrollbar_animation_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "cc/trees/layer_tree_impl.h" 10 #include "cc/trees/layer_tree_impl.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 : client_(client), 46 : client_(client),
47 fade_out_delay_(fade_out_delay), 47 fade_out_delay_(fade_out_delay),
48 fade_out_resize_delay_(fade_out_resize_delay), 48 fade_out_resize_delay_(fade_out_resize_delay),
49 need_trigger_scrollbar_show_(false), 49 need_trigger_scrollbar_show_(false),
50 is_animating_(false), 50 is_animating_(false),
51 scroll_layer_id_(scroll_layer_id), 51 scroll_layer_id_(scroll_layer_id),
52 currently_scrolling_(false), 52 currently_scrolling_(false),
53 scroll_gesture_has_scrolled_(false), 53 scroll_gesture_has_scrolled_(false),
54 opacity_(0.0f), 54 opacity_(0.0f),
55 fade_out_duration_(fade_out_duration), 55 fade_out_duration_(fade_out_duration),
56 show_scrollbars_on_scroll_gesture_(false),
57 need_thinning_animation_(false), 56 need_thinning_animation_(false),
58 weak_factory_(this) { 57 weak_factory_(this) {
59 ApplyOpacityToScrollbars(0.0f); 58 ApplyOpacityToScrollbars(0.0f);
60 } 59 }
61 60
62 ScrollbarAnimationController::ScrollbarAnimationController( 61 ScrollbarAnimationController::ScrollbarAnimationController(
63 int scroll_layer_id, 62 int scroll_layer_id,
64 ScrollbarAnimationControllerClient* client, 63 ScrollbarAnimationControllerClient* client,
65 base::TimeDelta show_delay, 64 base::TimeDelta show_delay,
66 base::TimeDelta fade_out_delay, 65 base::TimeDelta fade_out_delay,
67 base::TimeDelta fade_out_resize_delay, 66 base::TimeDelta fade_out_resize_delay,
68 base::TimeDelta fade_out_duration, 67 base::TimeDelta fade_out_duration,
69 base::TimeDelta thinning_duration) 68 base::TimeDelta thinning_duration)
70 : client_(client), 69 : client_(client),
71 show_delay_(show_delay), 70 show_delay_(show_delay),
72 fade_out_delay_(fade_out_delay), 71 fade_out_delay_(fade_out_delay),
73 fade_out_resize_delay_(fade_out_resize_delay), 72 fade_out_resize_delay_(fade_out_resize_delay),
74 need_trigger_scrollbar_show_(false), 73 need_trigger_scrollbar_show_(false),
75 is_animating_(false), 74 is_animating_(false),
76 scroll_layer_id_(scroll_layer_id), 75 scroll_layer_id_(scroll_layer_id),
77 currently_scrolling_(false), 76 currently_scrolling_(false),
78 scroll_gesture_has_scrolled_(false), 77 scroll_gesture_has_scrolled_(false),
79 opacity_(0.0f), 78 opacity_(0.0f),
80 fade_out_duration_(fade_out_duration), 79 fade_out_duration_(fade_out_duration),
81 show_scrollbars_on_scroll_gesture_(true),
82 need_thinning_animation_(true), 80 need_thinning_animation_(true),
83 weak_factory_(this) { 81 weak_factory_(this) {
84 vertical_controller_ = SingleScrollbarAnimationControllerThinning::Create( 82 vertical_controller_ = SingleScrollbarAnimationControllerThinning::Create(
85 scroll_layer_id, ScrollbarOrientation::VERTICAL, client, 83 scroll_layer_id, ScrollbarOrientation::VERTICAL, client,
86 thinning_duration); 84 thinning_duration);
87 horizontal_controller_ = SingleScrollbarAnimationControllerThinning::Create( 85 horizontal_controller_ = SingleScrollbarAnimationControllerThinning::Create(
88 scroll_layer_id, ScrollbarOrientation::HORIZONTAL, client, 86 scroll_layer_id, ScrollbarOrientation::HORIZONTAL, client,
89 thinning_duration); 87 thinning_duration);
90 ApplyOpacityToScrollbars(0.0f); 88 ApplyOpacityToScrollbars(0.0f);
91 } 89 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 return animated; 159 return animated;
162 } 160 }
163 161
164 float ScrollbarAnimationController::AnimationProgressAtTime( 162 float ScrollbarAnimationController::AnimationProgressAtTime(
165 base::TimeTicks now) { 163 base::TimeTicks now) {
166 base::TimeDelta delta = now - last_awaken_time_; 164 base::TimeDelta delta = now - last_awaken_time_;
167 float progress = delta.InSecondsF() / fade_out_duration_.InSecondsF(); 165 float progress = delta.InSecondsF() / fade_out_duration_.InSecondsF();
168 return std::max(std::min(progress, 1.f), 0.f); 166 return std::max(std::min(progress, 1.f), 0.f);
169 } 167 }
170 168
169 void ScrollbarAnimationController::DidScrollBegin() {
170 currently_scrolling_ = true;
171 }
172
171 void ScrollbarAnimationController::RunAnimationFrame(float progress) { 173 void ScrollbarAnimationController::RunAnimationFrame(float progress) {
172 ApplyOpacityToScrollbars(1.f - progress); 174 ApplyOpacityToScrollbars(1.f - progress);
173 if (progress == 1.f) 175 if (progress == 1.f)
174 StopAnimation(); 176 StopAnimation();
175 } 177 }
176 178
177 void ScrollbarAnimationController::DidScrollBegin() { 179 void ScrollbarAnimationController::DidScrollUpdate(bool on_resize) {
178 currently_scrolling_ = true;
179 }
180
181 void ScrollbarAnimationController::DidScrollEnd() {
182 bool has_scrolled = scroll_gesture_has_scrolled_;
183 scroll_gesture_has_scrolled_ = false;
184
185 currently_scrolling_ = false;
186
187 // We don't fade out scrollbar if they need thinning animation and mouse is
188 // near.
189 if (need_thinning_animation_ && MouseIsNearAnyScrollbar())
190 return;
191
192 if (has_scrolled)
193 PostDelayedFadeOut(false);
194 }
195
196 void ScrollbarAnimationController::DidScrollUpdate() {
197 if (need_thinning_animation_ && Captured()) 180 if (need_thinning_animation_ && Captured())
198 return; 181 return;
199 182
200 StopAnimation(); 183 StopAnimation();
201 184
202 // As an optimization, we avoid spamming fade delay tasks during active fast 185 // As an optimization, we avoid spamming fade delay tasks during active fast
203 // scrolls. But if we're not within one, we need to post every scroll update. 186 // scrolls. But if we're not within one, we need to post every scroll update.
204 if (!currently_scrolling_) { 187 if (!currently_scrolling_) {
205 // We don't fade out scrollbar if they need thinning animation and mouse is 188 // We don't fade out scrollbar if they need thinning animation and mouse is
206 // near. 189 // near.
207 if (!need_thinning_animation_ || !MouseIsNearAnyScrollbar()) 190 if (!need_thinning_animation_ || !MouseIsNearAnyScrollbar())
208 PostDelayedFadeOut(false); 191 PostDelayedFadeOut(on_resize);
209 } else { 192 } else {
210 scroll_gesture_has_scrolled_ = true; 193 scroll_gesture_has_scrolled_ = true;
211 } 194 }
212 195
213 Show(); 196 Show();
214 197
215 if (need_thinning_animation_) { 198 if (need_thinning_animation_) {
216 vertical_controller_->UpdateThumbThicknessScale(); 199 vertical_controller_->UpdateThumbThicknessScale();
217 horizontal_controller_->UpdateThumbThicknessScale(); 200 horizontal_controller_->UpdateThumbThicknessScale();
218 } 201 }
219 } 202 }
220 203
221 void ScrollbarAnimationController::WillUpdateScroll() { 204 void ScrollbarAnimationController::DidScrollEnd() {
222 if (show_scrollbars_on_scroll_gesture_) 205 bool has_scrolled = scroll_gesture_has_scrolled_;
223 DidScrollUpdate(); 206 scroll_gesture_has_scrolled_ = false;
224 }
225 207
226 void ScrollbarAnimationController::DidResize() { 208 currently_scrolling_ = false;
227 StopAnimation(); 209
228 Show(); 210 // We don't fade out scrollbar if they need thinning animation and mouse is
229 // We should use the gesture delay rather than the resize delay if we're in a 211 // near.
230 // gesture scroll, even if it is resizing. 212 if (need_thinning_animation_ && MouseIsNearAnyScrollbar())
231 PostDelayedFadeOut(!currently_scrolling_); 213 return;
214
215 if (has_scrolled)
216 PostDelayedFadeOut(false);
232 } 217 }
233 218
234 void ScrollbarAnimationController::DidMouseDown() { 219 void ScrollbarAnimationController::DidMouseDown() {
235 if (!need_thinning_animation_ || ScrollbarsHidden()) 220 if (!need_thinning_animation_ || ScrollbarsHidden())
236 return; 221 return;
237 222
238 vertical_controller_->DidMouseDown(); 223 vertical_controller_->DidMouseDown();
239 horizontal_controller_->DidMouseDown(); 224 horizontal_controller_->DidMouseDown();
240 } 225 }
241 226
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 if (opacity_ != opacity) 364 if (opacity_ != opacity)
380 client_->SetNeedsRedrawForScrollbarAnimation(); 365 client_->SetNeedsRedrawForScrollbarAnimation();
381 366
382 opacity_ = opacity; 367 opacity_ = opacity;
383 368
384 if (previouslyVisible != currentlyVisible) 369 if (previouslyVisible != currentlyVisible)
385 client_->DidChangeScrollbarVisibility(); 370 client_->DidChangeScrollbarVisibility();
386 } 371 }
387 372
388 } // namespace cc 373 } // namespace cc
OLDNEW
« no previous file with comments | « cc/input/scrollbar_animation_controller.h ('k') | cc/input/scrollbar_animation_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698