15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef UI_WM_PUBLIC_WINDOW_MOVE_CLIENT_H_ 6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define UI_WM_PUBLIC_WINDOW_MOVE_CLIENT_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/aura_export.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/vector2d.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gfx { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Point; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Window; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace client { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum WindowMoveResult { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOVE_SUCCESSFUL, // Moving window was successful. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOVE_CANCELED // Moving window was canceled. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)enum WindowMoveSource { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WINDOW_MOVE_SOURCE_MOUSE, 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WINDOW_MOVE_SOURCE_TOUCH, 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// An interface implemented by an object that manages programatically keyed 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// window moving. 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AURA_EXPORT WindowMoveClient { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Starts a nested message loop for moving the window. |drag_offset| is the 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // offset from the window origin to the cursor when the drag was started. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns MOVE_SUCCESSFUL if the move has completed successfully, or 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // MOVE_CANCELED otherwise. 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual WindowMoveResult RunMoveLoop(Window* window, 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const gfx::Vector2d& drag_offset, 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WindowMoveSource source) = 0; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Ends a previously started move loop. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void EndMoveLoop() = 0; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~WindowMoveClient() {} 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sets/Gets the activation client for the specified window. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AURA_EXPORT void SetWindowMoveClient(Window* window, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WindowMoveClient* client); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AURA_EXPORT WindowMoveClient* GetWindowMoveClient(Window* window); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace client 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace aura 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 56effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif // UI_WM_PUBLIC_WINDOW_MOVE_CLIENT_H_ 57