summaryrefslogtreecommitdiffstats
path: root/chromium/ui/wm/public/drag_drop_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/wm/public/drag_drop_client.h')
-rw-r--r--chromium/ui/wm/public/drag_drop_client.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/chromium/ui/wm/public/drag_drop_client.h b/chromium/ui/wm/public/drag_drop_client.h
new file mode 100644
index 00000000000..62a2355b105
--- /dev/null
+++ b/chromium/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_