| Index: ui/base/dragdrop/drag_source_win.cc
|
| diff --git a/ui/base/dragdrop/drag_source_win.cc b/ui/base/dragdrop/drag_source_win.cc
|
| index 90ce68273a3379b463e1d9571d9fc73dbd26ad3f..756aed75b37634e25056d9f6e36106e4531f079a 100644
|
| --- a/ui/base/dragdrop/drag_source_win.cc
|
| +++ b/ui/base/dragdrop/drag_source_win.cc
|
| @@ -6,7 +6,13 @@
|
|
|
| namespace ui {
|
|
|
| -DragSourceWin::DragSourceWin() : cancel_drag_(false) {
|
| +DragSourceWin::DragSourceWin()
|
| + : cancel_drag_(false),
|
| + event_source_(DragDropTypes::DRAG_EVENT_SOURCE_MOUSE) {
|
| +}
|
| +
|
| +DragSourceWin::DragSourceWin(DragDropTypes::DragEventSource event_source)
|
| + : cancel_drag_(false), event_source_(event_source) {
|
| }
|
|
|
| HRESULT DragSourceWin::QueryContinueDrag(BOOL escape_pressed, DWORD key_state) {
|
| @@ -18,7 +24,12 @@ HRESULT DragSourceWin::QueryContinueDrag(BOOL escape_pressed, DWORD key_state) {
|
| return DRAGDROP_S_CANCEL;
|
| }
|
|
|
| - if (!(key_state & MK_LBUTTON)) {
|
| + // On Windows, the touch-initiated drag-drop is driven by mouse right down
|
| + // event programmatically.
|
| + if ((event_source_ == DragDropTypes::DRAG_EVENT_SOURCE_MOUSE &&
|
| + !(key_state & MK_LBUTTON)) ||
|
| + (event_source_ == DragDropTypes::DRAG_EVENT_SOURCE_TOUCH &&
|
| + !(key_state && MK_RBUTTON))) {
|
| OnDragSourceDrop();
|
| return DRAGDROP_S_DROP;
|
| }
|
|
|