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 3 // found in the LICENSE file. 4 5 #ifndef UI_WM_PUBLIC_DRAG_DROP_CLIENT_H_ 6 #define UI_WM_PUBLIC_DRAG_DROP_CLIENT_H_ 7 8 #include "ui/aura/aura_export.h" 9 #include "ui/base/dragdrop/drag_drop_types.h" 10 #include "ui/gfx/native_widget_types.h" 11 12 namespace gfx { 13 class Point; 14 } 15 16 namespace ui { 17 class LocatedEvent; 18 class OSExchangeData; 19 } 20 21 namespace aura { 22 class Window; 23 namespace client { 24 25 // An interface implemented by an object that controls a drag and drop session. 26 class AURA_EXPORT DragDropClient { 27 public: ~DragDropClient()28 virtual ~DragDropClient() {} 29 30 // Initiates a drag and drop session. Returns the drag operation that was 31 // applied at the end of the drag drop session. |root_location| is in the 32 // root Window's coordinate system. 33 virtual int StartDragAndDrop(const ui::OSExchangeData& data, 34 aura::Window* root_window, 35 aura::Window* source_window, 36 const gfx::Point& root_location, 37 int operation, 38 ui::DragDropTypes::DragEventSource source) = 0; 39 40 // Called when mouse is dragged during a drag and drop. 41 virtual void DragUpdate(aura::Window* target, 42 const ui::LocatedEvent& event) = 0; 43 44 // Called when mouse is released during a drag and drop. 45 virtual void Drop(aura::Window* target, 46 const ui::LocatedEvent& event) = 0; 47 48 // Called when a drag and drop session is cancelled. 49 virtual void DragCancel() = 0; 50 51 // Returns true if a drag and drop session is in progress. 52 virtual bool IsDragDropInProgress() = 0; 53 }; 54 55 AURA_EXPORT void SetDragDropClient(Window* root_window, 56 DragDropClient* client); 57 AURA_EXPORT DragDropClient* GetDragDropClient(Window* root_window); 58 59 } // namespace client 60 } // namespace aura 61 62 #endif // UI_WM_PUBLIC_DRAG_DROP_CLIENT_H_ 63