| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef UI_WM_PUBLIC_WINDOW_MOVE_CLIENT_H_ |
| #define UI_WM_PUBLIC_WINDOW_MOVE_CLIENT_H_ |
| |
| #include "ui/aura/aura_export.h" |
| #include "ui/gfx/geometry/vector2d.h" |
| |
| namespace gfx { |
| class Point; |
| } |
| |
| namespace aura { |
| class Window; |
| namespace client { |
| |
| enum WindowMoveResult { |
| MOVE_SUCCESSFUL, // Moving window was successful. |
| MOVE_CANCELED // Moving window was canceled. |
| }; |
| |
| enum WindowMoveSource { |
| WINDOW_MOVE_SOURCE_MOUSE, |
| WINDOW_MOVE_SOURCE_TOUCH, |
| }; |
| |
| // An interface implemented by an object that manages programatically keyed |
| // window moving. |
| class AURA_EXPORT WindowMoveClient { |
| public: |
| // Starts a nested message loop for moving the window. |drag_offset| is the |
| // offset from the window origin to the cursor when the drag was started. |
| // Returns MOVE_SUCCESSFUL if the move has completed successfully, or |
| // MOVE_CANCELED otherwise. |
| virtual WindowMoveResult RunMoveLoop(Window* window, |
| const gfx::Vector2d& drag_offset, |
| WindowMoveSource source) = 0; |
| |
| // Ends a previously started move loop. |
| virtual void EndMoveLoop() = 0; |
| |
| protected: |
| virtual ~WindowMoveClient() {} |
| }; |
| |
| // Sets/Gets the activation client for the specified window. |
| AURA_EXPORT void SetWindowMoveClient(Window* window, |
| WindowMoveClient* client); |
| AURA_EXPORT WindowMoveClient* GetWindowMoveClient(Window* window); |
| |
| } // namespace client |
| } // namespace aura |
| |
| #endif // UI_WM_PUBLIC_WINDOW_MOVE_CLIENT_H_ |