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_VIEWS_DRAG_UTILS_H_
6#define UI_VIEWS_DRAG_UTILS_H_
7
8#include "ui/base/dragdrop/drag_drop_types.h"
9#include "ui/gfx/native_widget_types.h"
10#include "ui/views/views_export.h"
11
12namespace gfx {
13class Canvas;
14class Point;
15class Size;
16}
17
18namespace ui {
19class OSExchangeData;
20}
21
22namespace views {
23class Widget;
24
25// Starts a drag operation. This blocks until the drag operation completes.
26VIEWS_EXPORT void RunShellDrag(gfx::NativeView view,
27                               const ui::OSExchangeData& data,
28                               const gfx::Point& location,
29                               int operation,
30                               ui::DragDropTypes::DragEventSource source);
31
32// Returns a canvas that can be used to draw the drag image. Caller owns the
33// returned object. |widget| is Widget hosting the view being dragged.
34VIEWS_EXPORT gfx::Canvas* GetCanvasForDragImage(Widget* widget,
35                                                const gfx::Size& canvas_size);
36
37}  // namespace views
38
39#endif  // UI_VIEWS_DRAG_UTILS_H_
40