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

Unified Diff: ui/views/animation/ink_drop_impl.cc

Issue 2001843002: Use ink drop hover for focus states on toolbar buttons and location (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: format Created 4 years, 7 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: ui/views/animation/ink_drop_impl.cc
diff --git a/ui/views/animation/ink_drop_impl.cc b/ui/views/animation/ink_drop_impl.cc
index cce475b58b571bd75a16da0ed910792193c339bb..ba234127affc013b5b47ba79b2ef65abea8b4166 100644
--- a/ui/views/animation/ink_drop_impl.cc
+++ b/ui/views/animation/ink_drop_impl.cc
@@ -55,6 +55,7 @@ InkDropImpl::InkDropImpl(InkDropHost* ink_drop_host)
root_layer_(new ui::Layer(ui::LAYER_NOT_DRAWN)),
root_layer_added_to_host_(false),
is_hovered_(false),
+ is_focused_(false),
hover_after_ripple_timer_(nullptr) {
root_layer_->set_name("InkDropImpl:RootLayer");
}
@@ -82,9 +83,9 @@ void InkDropImpl::AnimateToState(InkDropState ink_drop_state) {
CreateInkDropRipple();
if (ink_drop_state != views::InkDropState::HIDDEN) {
- SetHoveredInternal(false, base::TimeDelta::FromMilliseconds(
- kHoverFadeOutBeforeRippleDurationInMs),
- true);
+ SetHighlight(false, base::TimeDelta::FromMilliseconds(
+ kHoverFadeOutBeforeRippleDurationInMs),
+ true);
}
ink_drop_ripple_->AnimateToState(ink_drop_state);
@@ -95,19 +96,24 @@ void InkDropImpl::SnapToActivated() {
if (!ink_drop_ripple_)
CreateInkDropRipple();
- SetHoveredInternal(false, base::TimeDelta(), false);
+ SetHighlight(false, base::TimeDelta(), false);
ink_drop_ripple_->SnapToActivated();
}
void InkDropImpl::SetHovered(bool is_hovered) {
is_hovered_ = is_hovered;
- SetHoveredInternal(is_hovered,
- is_hovered ? base::TimeDelta::FromMilliseconds(
- kHoverFadeInFromUserInputDurationInMs)
- : base::TimeDelta::FromMilliseconds(
- kHoverFadeOutFromUserInputDurationInMs),
- false);
+ SetHighlight(ShouldHighlight(),
+ ShouldHighlight() ? base::TimeDelta::FromMilliseconds(
+ kHoverFadeInFromUserInputDurationInMs)
+ : base::TimeDelta::FromMilliseconds(
+ kHoverFadeOutFromUserInputDurationInMs),
+ false);
+}
+
+void InkDropImpl::SetFocused(bool is_focused) {
+ is_focused_ = is_focused;
+ SetHighlight(ShouldHighlight(), base::TimeDelta(), false);
}
void InkDropImpl::DestroyHiddenTargetedAnimations() {
@@ -208,15 +214,15 @@ void InkDropImpl::AnimationEnded(InkDropHover::AnimationType animation_type,
}
}
-void InkDropImpl::SetHoveredInternal(bool is_hovered,
- base::TimeDelta animation_duration,
- bool explode) {
+void InkDropImpl::SetHighlight(bool should_highlight,
+ base::TimeDelta animation_duration,
+ bool explode) {
StopHoverAfterRippleTimer();
- if (IsHoverFadingInOrVisible() == is_hovered)
+ if (IsHoverFadingInOrVisible() == should_highlight)
return;
- if (is_hovered) {
+ if (should_highlight) {
CreateInkDropHover();
if (hover_ && !IsVisible())
hover_->FadeIn(animation_duration);
@@ -225,6 +231,10 @@ void InkDropImpl::SetHoveredInternal(bool is_hovered,
}
}
+bool InkDropImpl::ShouldHighlight() const {
+ return is_focused_ || is_hovered_;
+}
+
void InkDropImpl::StartHoverAfterRippleTimer() {
StopHoverAfterRippleTimer();
@@ -244,9 +254,9 @@ void InkDropImpl::StopHoverAfterRippleTimer() {
}
void InkDropImpl::HoverAfterRippleTimerFired() {
- SetHoveredInternal(true, base::TimeDelta::FromMilliseconds(
- kHoverFadeInAfterRippleDurationInMs),
- true);
+ SetHighlight(true, base::TimeDelta::FromMilliseconds(
+ kHoverFadeInAfterRippleDurationInMs),
+ true);
hover_after_ripple_timer_.reset();
}

Powered by Google App Engine
This is Rietveld 408576698