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 12namespace gfx { 13class Point; 14} 15 16namespace ui { 17class LocatedEvent; 18class OSExchangeData; 19} 20 21namespace aura { 22class Window; 23namespace client { 24 25// An interface implemented by an object that controls a drag and drop session. 26class AURA_EXPORT DragDropClient { 27 public: 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 55AURA_EXPORT void SetDragDropClient(Window* root_window, 56 DragDropClient* client); 57AURA_EXPORT DragDropClient* GetDragDropClient(Window* root_window); 58 59} // namespace client 60} // namespace aura 61 62#endif // UI_WM_PUBLIC_DRAG_DROP_CLIENT_H_ 63