| Index: content/browser/web_contents/web_drag_source_win.cc
|
| diff --git a/content/browser/web_contents/web_drag_source_win.cc b/content/browser/web_contents/web_drag_source_win.cc
|
| index 53df4e81725e0984a3f09e7ec496eb022174095f..d9f2166ada742f14cd68153210e29a19aca9b5a1 100644
|
| --- a/content/browser/web_contents/web_drag_source_win.cc
|
| +++ b/content/browser/web_contents/web_drag_source_win.cc
|
| @@ -6,11 +6,13 @@
|
|
|
| #include "base/bind.h"
|
| #include "content/browser/renderer_host/render_view_host_impl.h"
|
| +#include "content/browser/renderer_host/render_widget_host_view_win.h"
|
| #include "content/browser/web_contents/web_contents_impl.h"
|
| #include "content/browser/web_contents/web_drag_utils_win.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/notification_source.h"
|
| #include "content/public/browser/notification_types.h"
|
| +#include "ui/base/dragdrop/drag_drop_types.h"
|
| #include "ui/base/dragdrop/os_exchange_data.h"
|
|
|
| using WebKit::WebDragOperationNone;
|
| @@ -33,8 +35,9 @@ static void GetCursorPositions(gfx::NativeWindow wnd, gfx::Point* client,
|
| // WebDragSource, public:
|
|
|
| WebDragSource::WebDragSource(gfx::NativeWindow source_wnd,
|
| - WebContents* web_contents)
|
| - : ui::DragSourceWin(),
|
| + WebContents* web_contents,
|
| + ui::DragDropTypes::DragEventSource event_source)
|
| + : ui::DragSourceWin(event_source),
|
| source_wnd_(source_wnd),
|
| web_contents_(static_cast<WebContentsImpl*>(web_contents)),
|
| effect_(DROPEFFECT_NONE),
|
| @@ -66,6 +69,7 @@ void WebDragSource::OnDragSourceCancel() {
|
| web_contents_->DragSourceEndedAt(client.x(), client.y(),
|
| screen.x(), screen.y(),
|
| WebDragOperationNone);
|
| + CancelLongPressGestureIfNeeded();
|
| }
|
|
|
| void WebDragSource::OnDragSourceDrop() {
|
| @@ -84,12 +88,20 @@ void WebDragSource::OnDragSourceDrop() {
|
| void WebDragSource::DelayedOnDragSourceDrop() {
|
| if (!web_contents_)
|
| return;
|
| -
|
| gfx::Point client;
|
| gfx::Point screen;
|
| GetCursorPositions(source_wnd_, &client, &screen);
|
| web_contents_->DragSourceEndedAt(client.x(), client.y(), screen.x(),
|
| screen.y(), WinDragOpToWebDragOp(effect_));
|
| + CancelLongPressGestureIfNeeded();
|
| +}
|
| +
|
| +void WebDragSource::CancelLongPressGestureIfNeeded() {
|
| + RenderWidgetHostViewWin* rwhv =
|
| + static_cast<RenderWidgetHostViewWin*>(
|
| + web_contents_->GetRenderWidgetHostView());
|
| + if (rwhv->in_long_press_gesture())
|
| + rwhv->CancelLongPressGesture();
|
| }
|
|
|
| void WebDragSource::OnDragSourceMove() {
|
|
|