Chromium Code Reviews| 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() |
|
dcheng
2013/05/28 20:34:02
Nit: do we need this or can we just force all loca
Hongbo Min
2013/05/29 06:08:04
I prefer to reserve it since it is unnecessary to
|
| + : 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; |
| } |