Chromium Code Reviews| 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 aafbf2d65a63aa32810d6da8d352f9bf1663f8af..ac9d0938d6a29b241a863cae997ec5d752d5bc20 100644 |
| --- a/ui/views/controls/button/custom_button.cc |
| +++ b/ui/views/controls/button/custom_button.cc |
| @@ -10,6 +10,7 @@ |
| #include "ui/events/keycodes/keyboard_codes.h" |
| #include "ui/gfx/animation/throb_animation.h" |
| #include "ui/gfx/screen.h" |
| +#include "ui/views/animation/ink_drop_delegate.h" |
| #include "ui/views/controls/button/blue_button.h" |
| #include "ui/views/controls/button/checkbox.h" |
| #include "ui/views/controls/button/image_button.h" |
| @@ -25,9 +26,33 @@ |
| namespace views { |
| +namespace { |
| + |
| +// A stub InkDropDelegate implementation that always exists and does nothing. |
| +// A real InkDropDelegate descendant can be returned by a View's descendant via |
| +// GetInkDropDelegate(). |
| +class InkDropDelegateStub : public InkDropDelegate { |
| + public: |
| + InkDropDelegateStub() {} |
| + ~InkDropDelegateStub() override {} |
| + |
| + // InkDropDelegate: |
| + void SetInkDropSize(int large_size, |
| + int large_corner_radius, |
| + int small_size, |
| + int small_corner_radius) override {} |
| + void OnBoundsChanged() override {} |
| + void OnAction(InkDropState state) override {} |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(InkDropDelegateStub); |
| +}; |
|
sadrul
2015/11/25 22:38:58
Still not a fan of this stub. I think we should st
varkha
2015/11/26 00:05:46
Done.
|
| + |
| // How long the hover animation takes if uninterrupted. |
| static const int kHoverFadeDurationMs = 150; |
| +} // namespace |
| + |
| // static |
| const char CustomButton::kViewClassName[] = "CustomButton"; |
| @@ -284,6 +309,8 @@ void CustomButton::OnDragDone() { |
| // (since disabled buttons may still be able to be dragged). |
| if (state_ != STATE_DISABLED) |
| SetState(STATE_NORMAL); |
| + Button::OnDragDone(); |
|
sadrul
2015/11/25 22:38:58
Is this still needed?
varkha
2015/11/26 00:05:47
Done.
|
| + ink_drop_delegate_->OnAction(InkDropState::HIDDEN); |
| } |
| void CustomButton::GetAccessibleState(ui::AXViewState* state) { |
| @@ -324,6 +351,7 @@ void CustomButton::AnimationProgressed(const gfx::Animation* animation) { |
| CustomButton::CustomButton(ButtonListener* listener) |
| : Button(listener), |
| state_(STATE_NORMAL), |
| + ink_drop_delegate_(new InkDropDelegateStub), |
| animate_on_state_change_(true), |
| is_throbbing_(false), |
| triggerable_event_flags_(ui::EF_LEFT_MOUSE_BUTTON), |
| @@ -374,6 +402,10 @@ bool CustomButton::ShouldEnterHoveredState() { |
| //////////////////////////////////////////////////////////////////////////////// |
| // CustomButton, View overrides (protected): |
| +void CustomButton::OnBoundsChanged(const gfx::Rect& previous_bounds) { |
| + ink_drop_delegate_->OnBoundsChanged(); |
| +} |
| + |
| void CustomButton::ViewHierarchyChanged( |
| const ViewHierarchyChangedDetails& details) { |
| if (!details.is_add && state_ != STATE_DISABLED) |