Index: ash/wm/caption_buttons/alternate_frame_size_button.h |
diff --git a/ash/wm/caption_buttons/alternate_frame_size_button.h b/ash/wm/caption_buttons/alternate_frame_size_button.h |
index f7a0f7a4766ef3c290b618f4a66793ee9f232bdf..9b8474892e9cc0edc100a209f69a6c9125591b7b 100644 |
--- a/ash/wm/caption_buttons/alternate_frame_size_button.h |
+++ b/ash/wm/caption_buttons/alternate_frame_size_button.h |
@@ -26,12 +26,11 @@ class PhantomWindowController; |
// When the mouse is pressed over the size button or the size button is touched: |
// - The minimize and close buttons are set to snap left and snap right |
// respectively. |
-// - The pressed button is updated during the drag to reflect the button |
-// underneath the mouse cursor. (The size button is potentially unpressed). |
-// When the drag terminates, the action for the pressed button is executed. |
-// For the sake of simplicity, the size button is the event handler for a click |
-// starting on the size button and the entire drag (including when the size |
-// button is unpressed). |
+// - The size button stays pressed while the mouse is over the buttons to snap |
+// left and to snap right. The button underneath the mouse is hovered. |
+// When the drag terminates, the action for the button underneath the mouse |
+// is executed. For the sake of simplicity, the size button is the event |
+// handler for a click starting on the size button and the entire drag. |
class ASH_EXPORT AlternateFrameSizeButton : public FrameCaptionButton { |
public: |
AlternateFrameSizeButton(views::ButtonListener* listener, |
@@ -45,6 +44,7 @@ class ASH_EXPORT AlternateFrameSizeButton : public FrameCaptionButton { |
virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE; |
virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE; |
virtual void OnMouseCaptureLost() OVERRIDE; |
+ virtual void OnMouseMoved(const ui::MouseEvent& event) OVERRIDE; |
virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; |
void set_delay_to_set_buttons_to_snap_mode(int delay_ms) { |
@@ -58,8 +58,14 @@ class ASH_EXPORT AlternateFrameSizeButton : public FrameCaptionButton { |
// Sets the buttons adjacent to the size button to snap left and right. |
void SetButtonsToSnapMode(); |
- // Updates the pressed button based on |event_location|. |
- void UpdatePressedButton(const ui::LocatedEvent& event); |
+ // Updates |snap_type_|, whether the size button is pressed and whether any |
+ // other buttons are hovered. |
+ void UpdateSnapType(const ui::LocatedEvent& event); |
+ |
+ // Returns the button which should be hovered (if any) while in "snap mode" |
+ // for |event_location_in_screen|. |
+ const FrameCaptionButton* GetButtonToHover( |
+ const gfx::Point& event_location_in_screen) const; |
// Snaps |frame_| according to |snap_type_|. Returns true if |frame_| was |
// snapped. |
@@ -92,8 +98,9 @@ class ASH_EXPORT AlternateFrameSizeButton : public FrameCaptionButton { |
// right. |
bool in_snap_mode_; |
- // The action of the currently pressed button. If |snap_type_| == SNAP_NONE, |
- // the size button's default action is run when clicked. |
+ // The action to execute when the drag/click is ended. If |
+ // |snap_type_| == SNAP_NONE, the size button's default action is run when the |
+ // drag/click is ended. |
SnapType snap_type_; |
// Displays a preview of how the window's bounds will change as a result of |