diff options
Diffstat (limited to 'ui/wm/public/drag_drop_client.h')
-rw-r--r-- | ui/wm/public/drag_drop_client.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/ui/wm/public/drag_drop_client.h b/ui/wm/public/drag_drop_client.h new file mode 100644 index 0000000..62a2355 --- /dev/null +++ b/ui/wm/public/drag_drop_client.h @@ -0,0 +1,62 @@ +// 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_DRAG_DROP_CLIENT_H_ +#define UI_WM_PUBLIC_DRAG_DROP_CLIENT_H_ + +#include "ui/aura/aura_export.h" +#include "ui/base/dragdrop/drag_drop_types.h" +#include "ui/gfx/native_widget_types.h" + +namespace gfx { +class Point; +} + +namespace ui { +class LocatedEvent; +class OSExchangeData; +} + +namespace aura { +class Window; +namespace client { + +// An interface implemented by an object that controls a drag and drop session. +class AURA_EXPORT DragDropClient { + public: + virtual ~DragDropClient() {} + + // Initiates a drag and drop session. Returns the drag operation that was + // applied at the end of the drag drop session. |root_location| is in the + // root Window's coordinate system. + virtual int StartDragAndDrop(const ui::OSExchangeData& data, + aura::Window* root_window, + aura::Window* source_window, + const gfx::Point& root_location, + int operation, + ui::DragDropTypes::DragEventSource source) = 0; + + // Called when mouse is dragged during a drag and drop. + virtual void DragUpdate(aura::Window* target, + const ui::LocatedEvent& event) = 0; + + // Called when mouse is released during a drag and drop. + virtual void Drop(aura::Window* target, + const ui::LocatedEvent& event) = 0; + + // Called when a drag and drop session is cancelled. + virtual void DragCancel() = 0; + + // Returns true if a drag and drop session is in progress. + virtual bool IsDragDropInProgress() = 0; +}; + +AURA_EXPORT void SetDragDropClient(Window* root_window, + DragDropClient* client); +AURA_EXPORT DragDropClient* GetDragDropClient(Window* root_window); + +} // namespace client +} // namespace aura + +#endif // UI_WM_PUBLIC_DRAG_DROP_CLIENT_H_ |