Index: chrome/browser/ui/views/toolbar/toolbar_action_view.h |
diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view.h b/chrome/browser/ui/views/toolbar/toolbar_action_view.h |
index 73e607ea9ff9a132d245481fefa992bf65612711..243b59a86676b7086ecd2d4268ddfdb46437a87d 100644 |
--- a/chrome/browser/ui/views/toolbar/toolbar_action_view.h |
+++ b/chrome/browser/ui/views/toolbar/toolbar_action_view.h |
@@ -9,6 +9,7 @@ |
#include "chrome/browser/ui/views/toolbar/toolbar_action_view_delegate_views.h" |
#include "content/public/browser/notification_observer.h" |
#include "content/public/browser/notification_registrar.h" |
+#include "ui/views/animation/ink_drop_host.h" |
#include "ui/views/context_menu_controller.h" |
#include "ui/views/controls/button/menu_button.h" |
#include "ui/views/controls/button/menu_button_listener.h" |
@@ -27,6 +28,7 @@ class Image; |
} |
namespace views { |
+class InkDropAnimationController; |
class MenuItemView; |
class MenuRunner; |
} |
@@ -39,7 +41,8 @@ class ToolbarActionView : public views::MenuButton, |
public ToolbarActionViewDelegateViews, |
public views::MenuButtonListener, |
public views::ContextMenuController, |
- public content::NotificationObserver { |
+ public content::NotificationObserver, |
+ public views::InkDropHost { |
public: |
// Need DragController here because ToolbarActionView could be |
// dragged/dropped. |
@@ -76,6 +79,7 @@ class ToolbarActionView : public views::MenuButton, |
// views::MenuButtonListener: |
void OnMenuButtonClicked(views::View* sender, |
const gfx::Point& point) override; |
+ void OnMenuButtonClickCanceled(views::View* sender) override; |
// content::NotificationObserver: |
void Observe(int type, |
@@ -108,9 +112,24 @@ class ToolbarActionView : public views::MenuButton, |
views::MenuItemView* menu_for_testing() { return menu_; } |
+ // views::InkDropHost: |
+ void AddInkDropLayer(ui::Layer* ink_drop_layer) override; |
+ void RemoveInkDropLayer(ui::Layer* ink_drop_layer) override; |
+ |
+ protected: |
+ // Returns the Point where the ink drop should be centered. |
+ virtual gfx::Point CalculateInkDropCenter() const; |
+ |
+ views::InkDropAnimationController* ink_drop_animation_controller() { |
+ return ink_drop_animation_controller_.get(); |
+ } |
+ |
private: |
// views::MenuButton: |
gfx::Size GetPreferredSize() const override; |
+ void Layout() override; |
+ bool OnMousePressed(const ui::MouseEvent& event) override; |
+ void OnGestureEvent(ui::GestureEvent* event) override; |
void OnDragDone() override; |
void ViewHierarchyChanged( |
const ViewHierarchyChangedDetails& details) override; |
@@ -172,6 +191,9 @@ class ToolbarActionView : public views::MenuButton, |
content::NotificationRegistrar registrar_; |
+ // Animation controller for the ink drop ripple effect. |
+ scoped_ptr<views::InkDropAnimationController> ink_drop_animation_controller_; |
+ |
base::WeakPtrFactory<ToolbarActionView> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(ToolbarActionView); |