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

Unified Diff: cc/input/scrollbar_animation_controller.cc

Issue 2816923002: change overlay scrollbar hover show to hover fade in (Closed)
Patch Set: bokan comment addressed Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: cc/input/scrollbar_animation_controller.cc
diff --git a/cc/input/scrollbar_animation_controller.cc b/cc/input/scrollbar_animation_controller.cc
index c018016c8d7f93be8c052b088abf5e6fef919cfd..24a724a0a07f5c47fb32d8dc4fd0cc750774a003 100644
--- a/cc/input/scrollbar_animation_controller.cc
+++ b/cc/input/scrollbar_animation_controller.cc
@@ -27,14 +27,16 @@ std::unique_ptr<ScrollbarAnimationController>
ScrollbarAnimationController::CreateScrollbarAnimationControllerAuraOverlay(
int scroll_layer_id,
ScrollbarAnimationControllerClient* client,
- base::TimeDelta show_delay,
+ base::TimeDelta fade_in_delay,
base::TimeDelta fade_out_delay,
base::TimeDelta fade_out_resize_delay,
+ base::TimeDelta fade_in_duration,
base::TimeDelta fade_out_duration,
base::TimeDelta thinning_duration) {
return base::WrapUnique(new ScrollbarAnimationController(
- scroll_layer_id, client, show_delay, fade_out_delay,
- fade_out_resize_delay, fade_out_duration, thinning_duration));
+ scroll_layer_id, client, fade_in_delay, fade_out_delay,
+ fade_out_resize_delay, fade_in_duration, fade_out_duration,
+ thinning_duration));
}
ScrollbarAnimationController::ScrollbarAnimationController(
@@ -46,13 +48,14 @@ ScrollbarAnimationController::ScrollbarAnimationController(
: client_(client),
fade_out_delay_(fade_out_delay),
fade_out_resize_delay_(fade_out_resize_delay),
+ fade_out_duration_(fade_out_duration),
need_trigger_scrollbar_show_(false),
is_animating_(false),
+ animation_change_(NONE),
scroll_layer_id_(scroll_layer_id),
currently_scrolling_(false),
show_in_fast_scroll_(false),
opacity_(0.0f),
- fade_out_duration_(fade_out_duration),
show_scrollbars_on_scroll_gesture_(false),
need_thinning_animation_(false),
weak_factory_(this) {
@@ -62,22 +65,25 @@ ScrollbarAnimationController::ScrollbarAnimationController(
ScrollbarAnimationController::ScrollbarAnimationController(
int scroll_layer_id,
ScrollbarAnimationControllerClient* client,
- base::TimeDelta show_delay,
+ base::TimeDelta fade_in_delay,
base::TimeDelta fade_out_delay,
base::TimeDelta fade_out_resize_delay,
+ base::TimeDelta fade_in_duration,
base::TimeDelta fade_out_duration,
base::TimeDelta thinning_duration)
: client_(client),
- show_delay_(show_delay),
+ fade_in_delay_(fade_in_delay),
fade_out_delay_(fade_out_delay),
fade_out_resize_delay_(fade_out_resize_delay),
+ fade_in_duration_(fade_in_duration),
+ fade_out_duration_(fade_out_duration),
need_trigger_scrollbar_show_(false),
is_animating_(false),
+ animation_change_(NONE),
scroll_layer_id_(scroll_layer_id),
currently_scrolling_(false),
show_in_fast_scroll_(false),
opacity_(0.0f),
- fade_out_duration_(fade_out_duration),
show_scrollbars_on_scroll_gesture_(true),
need_thinning_animation_(true),
weak_factory_(this) {
@@ -107,7 +113,7 @@ ScrollbarAnimationController::GetScrollbarAnimationController(
}
void ScrollbarAnimationController::StartAnimation() {
- delayed_scrollbar_show_.Cancel();
+ delayed_scrollbar_fade_in_.Cancel();
delayed_scrollbar_fade_out_.Cancel();
is_animating_ = true;
last_awaken_time_ = base::TimeTicks();
@@ -115,22 +121,26 @@ void ScrollbarAnimationController::StartAnimation() {
}
void ScrollbarAnimationController::StopAnimation() {
- delayed_scrollbar_show_.Cancel();
+ delayed_scrollbar_fade_in_.Cancel();
delayed_scrollbar_fade_out_.Cancel();
is_animating_ = false;
+ animation_change_ = NONE;
}
-void ScrollbarAnimationController::PostDelayedShow() {
+void ScrollbarAnimationController::PostDelayedFadeIn() {
DCHECK(delayed_scrollbar_fade_out_.IsCancelled());
- delayed_scrollbar_show_.Cancel();
- delayed_scrollbar_show_.Reset(base::Bind(&ScrollbarAnimationController::Show,
- weak_factory_.GetWeakPtr()));
- client_->PostDelayedScrollbarAnimationTask(delayed_scrollbar_show_.callback(),
- show_delay_);
+ animation_change_ = FADE_IN;
+ delayed_scrollbar_fade_in_.Cancel();
+ delayed_scrollbar_fade_in_.Reset(
+ base::Bind(&ScrollbarAnimationController::StartAnimation,
+ weak_factory_.GetWeakPtr()));
+ client_->PostDelayedScrollbarAnimationTask(
+ delayed_scrollbar_fade_in_.callback(), fade_in_delay_);
}
void ScrollbarAnimationController::PostDelayedFadeOut(bool on_resize) {
- DCHECK(delayed_scrollbar_show_.IsCancelled());
+ DCHECK(delayed_scrollbar_fade_in_.IsCancelled());
+ animation_change_ = FADE_OUT;
base::TimeDelta delay = on_resize ? fade_out_resize_delay_ : fade_out_delay_;
delayed_scrollbar_fade_out_.Cancel();
delayed_scrollbar_fade_out_.Reset(
@@ -166,12 +176,23 @@ bool ScrollbarAnimationController::Animate(base::TimeTicks now) {
float ScrollbarAnimationController::AnimationProgressAtTime(
base::TimeTicks now) {
base::TimeDelta delta = now - last_awaken_time_;
- float progress = delta.InSecondsF() / fade_out_duration_.InSecondsF();
+ base::TimeDelta duration =
+ animation_change_ == FADE_IN ? fade_in_duration_ : fade_out_duration_;
+ float progress = delta.InSecondsF() / duration.InSecondsF();
return std::max(std::min(progress, 1.f), 0.f);
}
void ScrollbarAnimationController::RunAnimationFrame(float progress) {
- ApplyOpacityToScrollbars(1.f - progress);
+ DCHECK(animation_change_ != NONE);
+ float opacity;
+
+ if (animation_change_ == FADE_IN) {
+ opacity = std::max(progress, opacity_);
+ } else {
+ opacity = std::min(1.f - progress, opacity_);
+ }
+
+ ApplyOpacityToScrollbars(opacity);
if (progress == 1.f)
StopAnimation();
}
@@ -268,7 +289,7 @@ void ScrollbarAnimationController::DidMouseLeave() {
vertical_controller_->DidMouseLeave();
horizontal_controller_->DidMouseLeave();
- delayed_scrollbar_show_.Cancel();
+ delayed_scrollbar_fade_in_.Cancel();
need_trigger_scrollbar_show_ = false;
if (ScrollbarsHidden() || Captured())
@@ -296,9 +317,9 @@ void ScrollbarAnimationController::DidMouseMoveNear(
if (ScrollbarsHidden()) {
if (need_trigger_scrollbar_show_before != need_trigger_scrollbar_show_) {
if (need_trigger_scrollbar_show_) {
- PostDelayedShow();
+ PostDelayedFadeIn();
} else {
- delayed_scrollbar_show_.Cancel();
+ delayed_scrollbar_fade_in_.Cancel();
}
}
} else {
@@ -324,7 +345,7 @@ bool ScrollbarAnimationController::CalcNeedTriggerScrollbarShow(
if (scrollbar->orientation() != orientation)
continue;
- if (distance < kMouseMoveDistanceToTriggerShow)
+ if (distance < kMouseMoveDistanceToTriggerFadeIn)
return true;
}
@@ -359,7 +380,7 @@ bool ScrollbarAnimationController::Captured() const {
}
void ScrollbarAnimationController::Show() {
- delayed_scrollbar_show_.Cancel();
+ delayed_scrollbar_fade_in_.Cancel();
ApplyOpacityToScrollbars(1.0f);
}

Powered by Google App Engine
This is Rietveld 408576698