Index: chrome/browser/ui/views/toolbar/toolbar_button.cc |
diff --git a/chrome/browser/ui/views/toolbar/toolbar_button.cc b/chrome/browser/ui/views/toolbar/toolbar_button.cc |
index 33cfcd013c9dc9d0e64e3a372ebb59925614c3ab..02d65364557baeb47e11e5bc10513594d265ded3 100644 |
--- a/chrome/browser/ui/views/toolbar/toolbar_button.cc |
+++ b/chrome/browser/ui/views/toolbar/toolbar_button.cc |
@@ -34,7 +34,7 @@ ToolbarButton::ToolbarButton(views::ButtonListener* listener, |
y_position_on_lbuttondown_(0), |
ink_drop_animation_controller_( |
views::InkDropAnimationControllerFactory:: |
- CreateInkDropAnimationController(this)), |
+ CreateInkDropAnimationController(this, this)), |
show_menu_factory_(this) { |
set_context_menu_controller(this); |
@@ -151,7 +151,13 @@ void ToolbarButton::OnMouseReleased(const ui::MouseEvent& event) { |
void ToolbarButton::OnMouseCaptureLost() { |
} |
+void ToolbarButton::OnMouseEntered(const ui::MouseEvent& event) { |
+ UpdateInkDropHoverState(); |
+} |
+ |
void ToolbarButton::OnMouseExited(const ui::MouseEvent& event) { |
+ UpdateInkDropHoverState(); |
Peter Kasting
2015/11/11 21:41:38
Nit: It might be better to do this below the SetSt
|
+ |
// Starting a drag results in a MouseExited, we need to ignore it. |
// A right click release triggers an exit event. We want to |
// remain in a PUSHED state until the drop down menu closes. |
@@ -179,19 +185,24 @@ void ToolbarButton::OnGestureEvent(ui::GestureEvent* event) { |
case ui::ET_GESTURE_LONG_PRESS: |
ink_drop_state = views::InkDropState::SLOW_ACTION_PENDING; |
break; |
- case ui::ET_GESTURE_TAP: |
- ink_drop_state = views::InkDropState::QUICK_ACTION; |
- break; |
case ui::ET_GESTURE_LONG_TAP: |
ink_drop_state = views::InkDropState::SLOW_ACTION; |
break; |
+ case ui::ET_GESTURE_SCROLL_BEGIN: |
case ui::ET_GESTURE_END: |
- case ui::ET_GESTURE_TAP_CANCEL: |
ink_drop_state = views::InkDropState::HIDDEN; |
break; |
default: |
return; |
} |
+ |
+ if (ink_drop_state == views::InkDropState::HIDDEN && |
+ ink_drop_animation_controller_->WillAutoAnimateToHidden()) { |
+ // Some InkDropStates automatically transition to the HIDDEN state so we |
+ // don't make an explicit call. Explicitly animating to HIDDEN in this case |
+ // would prematurely pre-empt these animations. |
Peter Kasting
2015/11/11 21:41:38
Nit: I'd move this comment above the conditional,
|
+ return; |
+ } |
ink_drop_animation_controller_->AnimateToState(ink_drop_state); |
} |
@@ -214,6 +225,10 @@ ToolbarButton::CreateDefaultBorder() const { |
return border.Pass(); |
} |
+void ToolbarButton::OnEnabledChanged() { |
+ UpdateInkDropHoverState(); |
+} |
+ |
void ToolbarButton::ShowContextMenuForView(View* source, |
const gfx::Point& point, |
ui::MenuSourceType source_type) { |
@@ -346,6 +361,10 @@ gfx::Point ToolbarButton::CalculateInkDropCenter() const { |
return GetLocalBounds().CenterPoint(); |
} |
+void ToolbarButton::UpdateInkDropHoverState() { |
+ ink_drop_animation_controller_->SetHovered(ShouldShowInkDropHover()); |
+} |
+ |
const char* ToolbarButton::GetClassName() const { |
return "ToolbarButton"; |
} |