1a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// Use of this source code is governed by a BSD-style license that can be 3a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// found in the LICENSE file. 4a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 5a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#ifndef UI_AURA_CLIENT_WINDOW_MOVE_CLIENT_H_ 6a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#define UI_AURA_CLIENT_WINDOW_MOVE_CLIENT_H_ 7a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 8a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include "ui/aura/aura_export.h" 9a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include "ui/gfx/vector2d.h" 10a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 11a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgnamespace gfx { 12a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgclass Point; 13a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org} 14a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 15a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgnamespace aura { 16a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgclass Window; 17a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgnamespace client { 18a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 19a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgenum WindowMoveResult { 20a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org MOVE_SUCCESSFUL, // Moving window was successful. 21a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org MOVE_CANCELED // Moving window was canceled. 22a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org}; 23a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 24a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgenum WindowMoveSource { 25a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org WINDOW_MOVE_SOURCE_MOUSE, 26a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org WINDOW_MOVE_SOURCE_TOUCH, 27a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org}; 28a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 29a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// An interface implemented by an object that manages programatically keyed 30a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// window moving. 31a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgclass AURA_EXPORT WindowMoveClient { 32a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org public: 33a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org // Starts a nested message loop for moving the window. |drag_offset| is the 34a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org // offset from the window origin to the cursor when the drag was started. 35a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org // Returns MOVE_SUCCESSFUL if the move has completed successfully, or 36a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org // MOVE_CANCELED otherwise. 37a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org virtual WindowMoveResult RunMoveLoop(Window* window, 38a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org const gfx::Vector2d& drag_offset, 39a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org WindowMoveSource source) = 0; 40a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 41a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org // Ends a previously started move loop. 42a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org virtual void EndMoveLoop() = 0; 43a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 44a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org protected: 45a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org virtual ~WindowMoveClient() {} 46a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org}; 47a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 48a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// Sets/Gets the activation client for the specified window. 49a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgAURA_EXPORT void SetWindowMoveClient(Window* window, 50a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org WindowMoveClient* client); 51a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgAURA_EXPORT WindowMoveClient* GetWindowMoveClient(Window* window); 52a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 53a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org} // namespace client 54a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org} // namespace aura 55a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org 56a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif // UI_AURA_CLIENT_WINDOW_MOVE_CLIENT_H_ 57a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org