| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef UI_VIEWS_CONTROLS_BUTTON_CUSTOM_BUTTON_H_ | 5 #ifndef UI_VIEWS_CONTROLS_BUTTON_CUSTOM_BUTTON_H_ | 
| 6 #define UI_VIEWS_CONTROLS_BUTTON_CUSTOM_BUTTON_H_ | 6 #define UI_VIEWS_CONTROLS_BUTTON_CUSTOM_BUTTON_H_ | 
| 7 | 7 | 
| 8 #include <memory> | 8 #include <memory> | 
| 9 | 9 | 
| 10 #include "base/macros.h" | 10 #include "base/macros.h" | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 30     NOTIFY_ON_PRESS, | 30     NOTIFY_ON_PRESS, | 
| 31     NOTIFY_ON_RELEASE, | 31     NOTIFY_ON_RELEASE, | 
| 32   }; | 32   }; | 
| 33 | 33 | 
| 34   // The menu button's class name. | 34   // The menu button's class name. | 
| 35   static const char kViewClassName[]; | 35   static const char kViewClassName[]; | 
| 36 | 36 | 
| 37   static const CustomButton* AsCustomButton(const View* view); | 37   static const CustomButton* AsCustomButton(const View* view); | 
| 38   static CustomButton* AsCustomButton(View* view); | 38   static CustomButton* AsCustomButton(View* view); | 
| 39 | 39 | 
| 40   // Paint an MD-style focus ring on the given canvas at the given bounds. |  | 
| 41   static void PaintMdFocusRing(gfx::Canvas* canvas, View* view); |  | 
| 42 |  | 
| 43   ~CustomButton() override; | 40   ~CustomButton() override; | 
| 44 | 41 | 
| 45   // Get/sets the current display state of the button. | 42   // Get/sets the current display state of the button. | 
| 46   ButtonState state() const { return state_; } | 43   ButtonState state() const { return state_; } | 
| 47   void SetState(ButtonState state); | 44   void SetState(ButtonState state); | 
| 48 | 45 | 
| 49   // Starts throbbing. See HoverAnimation for a description of cycles_til_stop. | 46   // Starts throbbing. See HoverAnimation for a description of cycles_til_stop. | 
| 50   void StartThrobbing(int cycles_til_stop); | 47   void StartThrobbing(int cycles_til_stop); | 
| 51 | 48 | 
| 52   // Stops throbbing immediately. | 49   // Stops throbbing immediately. | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 112                        ui::MenuSourceType source_type) override; | 109                        ui::MenuSourceType source_type) override; | 
| 113   void OnDragDone() override; | 110   void OnDragDone() override; | 
| 114   void GetAccessibleState(ui::AXViewState* state) override; | 111   void GetAccessibleState(ui::AXViewState* state) override; | 
| 115   void VisibilityChanged(View* starting_from, bool is_visible) override; | 112   void VisibilityChanged(View* starting_from, bool is_visible) override; | 
| 116   std::unique_ptr<InkDropHover> CreateInkDropHover() const override; | 113   std::unique_ptr<InkDropHover> CreateInkDropHover() const override; | 
| 117   SkColor GetInkDropBaseColor() const override; | 114   SkColor GetInkDropBaseColor() const override; | 
| 118 | 115 | 
| 119   // Overridden from gfx::AnimationDelegate: | 116   // Overridden from gfx::AnimationDelegate: | 
| 120   void AnimationProgressed(const gfx::Animation* animation) override; | 117   void AnimationProgressed(const gfx::Animation* animation) override; | 
| 121 | 118 | 
| 122   InkDropDelegate* ink_drop_delegate() const { return ink_drop_delegate_; } |  | 
| 123 |  | 
| 124   // Overridden from View: | 119   // Overridden from View: | 
| 125   void Layout() override; |  | 
| 126   void ViewHierarchyChanged( | 120   void ViewHierarchyChanged( | 
| 127       const ViewHierarchyChangedDetails& details) override; | 121       const ViewHierarchyChangedDetails& details) override; | 
| 128   void OnFocus() override; |  | 
| 129   void OnBlur() override; | 122   void OnBlur() override; | 
|  | 123   bool ShouldShowInkDropForFocus() const override; | 
| 130 | 124 | 
| 131  protected: | 125  protected: | 
| 132   // Construct the Button with a Listener. See comment for Button's ctor. | 126   // Construct the Button with a Listener. See comment for Button's ctor. | 
| 133   explicit CustomButton(ButtonListener* listener); | 127   explicit CustomButton(ButtonListener* listener); | 
| 134 | 128 | 
| 135   // Invoked from SetState() when SetState() is passed a value that differs from | 129   // Invoked from SetState() when SetState() is passed a value that differs from | 
| 136   // the current state. CustomButton's implementation of StateChanged() does | 130   // the current state. CustomButton's implementation of StateChanged() does | 
| 137   // nothing; this method is provided for subclasses that wish to do something | 131   // nothing; this method is provided for subclasses that wish to do something | 
| 138   // on state changes. | 132   // on state changes. | 
| 139   virtual void StateChanged(); | 133   virtual void StateChanged(); | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 153   void set_has_ink_drop_action_on_click(bool has_ink_drop_action_on_click) { | 147   void set_has_ink_drop_action_on_click(bool has_ink_drop_action_on_click) { | 
| 154     has_ink_drop_action_on_click_ = has_ink_drop_action_on_click; | 148     has_ink_drop_action_on_click_ = has_ink_drop_action_on_click; | 
| 155   } | 149   } | 
| 156 | 150 | 
| 157   // Returns true if the button should enter hovered state; that is, if the | 151   // Returns true if the button should enter hovered state; that is, if the | 
| 158   // mouse is over the button, and no other window has capture (which would | 152   // mouse is over the button, and no other window has capture (which would | 
| 159   // prevent the button from receiving MouseExited events and updating its | 153   // prevent the button from receiving MouseExited events and updating its | 
| 160   // state). This does not take into account enabled state. | 154   // state). This does not take into account enabled state. | 
| 161   bool ShouldEnterHoveredState(); | 155   bool ShouldEnterHoveredState(); | 
| 162 | 156 | 
| 163   void set_ink_drop_delegate(InkDropDelegate* ink_drop_delegate) { |  | 
| 164     ink_drop_delegate_ = ink_drop_delegate; |  | 
| 165   } |  | 
| 166 |  | 
| 167   // When called, creates and uses |md_focus_ring_| instead of a focus painter. |  | 
| 168   void UseMdFocusRing(); |  | 
| 169 |  | 
| 170   // Overridden from Button: | 157   // Overridden from Button: | 
| 171   void NotifyClick(const ui::Event& event) override; | 158   void NotifyClick(const ui::Event& event) override; | 
| 172   void OnClickCanceled(const ui::Event& event) override; | 159   void OnClickCanceled(const ui::Event& event) override; | 
| 173 | 160 | 
| 174   const gfx::ThrobAnimation& hover_animation() const { | 161   const gfx::ThrobAnimation& hover_animation() const { | 
| 175     return hover_animation_; | 162     return hover_animation_; | 
| 176   } | 163   } | 
| 177 | 164 | 
| 178  private: | 165  private: | 
| 179   ButtonState state_; | 166   ButtonState state_; | 
| 180 | 167 | 
| 181   gfx::ThrobAnimation hover_animation_; | 168   gfx::ThrobAnimation hover_animation_; | 
| 182 | 169 | 
| 183   // Should we animate when the state changes? Defaults to true. | 170   // Should we animate when the state changes? Defaults to true. | 
| 184   bool animate_on_state_change_; | 171   bool animate_on_state_change_; | 
| 185 | 172 | 
| 186   // Is the hover animation running because StartThrob was invoked? | 173   // Is the hover animation running because StartThrob was invoked? | 
| 187   bool is_throbbing_; | 174   bool is_throbbing_; | 
| 188 | 175 | 
| 189   // Mouse event flags which can trigger button actions. | 176   // Mouse event flags which can trigger button actions. | 
| 190   int triggerable_event_flags_; | 177   int triggerable_event_flags_; | 
| 191 | 178 | 
| 192   // See description above setter. | 179   // See description above setter. | 
| 193   bool request_focus_on_press_; | 180   bool request_focus_on_press_; | 
| 194 | 181 | 
| 195   // Animation delegate for the ink drop ripple effect. It is owned by a |  | 
| 196   // descendant class and needs to be reset before an instance of the concrete |  | 
| 197   // CustomButton is destroyed. |  | 
| 198   InkDropDelegate* ink_drop_delegate_; |  | 
| 199 |  | 
| 200   // The event on which the button should notify its listener. | 182   // The event on which the button should notify its listener. | 
| 201   NotifyAction notify_action_; | 183   NotifyAction notify_action_; | 
| 202 | 184 | 
| 203   // True when a button click should trigger an animation action on | 185   // True when a button click should trigger an animation action on | 
| 204   // |ink_drop_delegate_|. | 186   // |ink_drop_delegate_|. | 
| 205   // TODO(bruthig): Use an InkDropAction enum and drop the flag. | 187   // TODO(bruthig): Use an InkDropAction enum and drop the flag. | 
| 206   bool has_ink_drop_action_on_click_; | 188   bool has_ink_drop_action_on_click_; | 
| 207 | 189 | 
| 208   // The animation action to trigger on the |ink_drop_delegate_| when the button | 190   // The animation action to trigger on ink_drop_delegate() when the button | 
| 209   // is clicked. | 191   // is clicked. | 
| 210   InkDropState ink_drop_action_on_click_; | 192   InkDropState ink_drop_action_on_click_; | 
| 211 | 193 | 
| 212   // When true, the ink drop ripple and hover will be hidden prior to showing | 194   // When true, the ink drop ripple and hover will be hidden prior to showing | 
| 213   // the context menu. | 195   // the context menu. | 
| 214   bool hide_ink_drop_when_showing_context_menu_; | 196   bool hide_ink_drop_when_showing_context_menu_; | 
| 215 | 197 | 
| 216   // The color of the ripple and hover. | 198   // The color of the ripple and hover. | 
| 217   SkColor ink_drop_base_color_; | 199   SkColor ink_drop_base_color_; | 
| 218 | 200 | 
| 219   // The MD-style focus ring. This is not done via a FocusPainter |  | 
| 220   // because it needs to paint to a layer so it can extend beyond the bounds of |  | 
| 221   // |this|. |  | 
| 222   views::View* md_focus_ring_; |  | 
| 223 |  | 
| 224   DISALLOW_COPY_AND_ASSIGN(CustomButton); | 201   DISALLOW_COPY_AND_ASSIGN(CustomButton); | 
| 225 }; | 202 }; | 
| 226 | 203 | 
| 227 }  // namespace views | 204 }  // namespace views | 
| 228 | 205 | 
| 229 #endif  // UI_VIEWS_CONTROLS_BUTTON_CUSTOM_BUTTON_H_ | 206 #endif  // UI_VIEWS_CONTROLS_BUTTON_CUSTOM_BUTTON_H_ | 
| OLD | NEW | 
|---|