Index: ui/views/controls/button/custom_button.cc |
diff --git a/ui/views/controls/button/custom_button.cc b/ui/views/controls/button/custom_button.cc |
index e8ce4a003e394c3ff8f5ae260888f8806ddf8b1c..a06b0c4e7840be0d086b112fbec5b1783ed1afac 100644 |
--- a/ui/views/controls/button/custom_button.cc |
+++ b/ui/views/controls/button/custom_button.cc |
@@ -143,8 +143,11 @@ const char* CustomButton::GetClassName() const { |
bool CustomButton::OnMousePressed(const ui::MouseEvent& event) { |
if (state_ == STATE_DISABLED) |
return true; |
- if (ShouldEnterPushedState(event) && HitTestPoint(event.location())) |
+ if (ShouldEnterPushedState(event) && HitTestPoint(event.location())) { |
SetState(STATE_PRESSED); |
+ if (ink_drop_delegate_) |
+ ink_drop_delegate_->OnAction(views::InkDropState::ACTION_PENDING); |
+ } |
if (request_focus_on_press_) |
RequestFocus(); |
if (IsTriggerableEvent(event) && notify_action_ == NOTIFY_ON_PRESS) { |
@@ -342,7 +345,9 @@ CustomButton::CustomButton(ButtonListener* listener) |
triggerable_event_flags_(ui::EF_LEFT_MOUSE_BUTTON), |
request_focus_on_press_(true), |
ink_drop_delegate_(nullptr), |
- notify_action_(NOTIFY_ON_RELEASE) { |
+ notify_action_(NOTIFY_ON_RELEASE), |
+ has_ink_drop_action_on_click_(false), |
+ ink_drop_action_on_click_(InkDropState::QUICK_ACTION) { |
hover_animation_.reset(new gfx::ThrobAnimation(this)); |
hover_animation_->SetSlideDuration(kHoverFadeDurationMs); |
} |
@@ -405,6 +410,18 @@ void CustomButton::OnBlur() { |
SetState(STATE_NORMAL); |
} |
+void CustomButton::NotifyClick(const ui::Event& event) { |
+ if (ink_drop_delegate() && has_ink_drop_action_on_click_) |
+ ink_drop_delegate()->OnAction(ink_drop_action_on_click_); |
+ Button::NotifyClick(event); |
+} |
+ |
+void CustomButton::OnClickCanceled(const ui::Event& event) { |
+ if (ink_drop_delegate()) |
+ ink_drop_delegate()->OnAction(views::InkDropState::HIDDEN); |
+ Button::OnClickCanceled(event); |
+} |
+ |
bool CustomButton::IsChildWidget() const { |
return GetWidget() && GetWidget()->GetTopLevelWidget() != GetWidget(); |
} |