1 // Copyright (c) 2011 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 #include "ui/base/dragdrop/drag_source_win.h" 6 7 namespace ui { 8 9 DragSourceWin::DragSourceWin() : cancel_drag_(false) { 10 } 11 12 HRESULT DragSourceWin::QueryContinueDrag(BOOL escape_pressed, DWORD key_state) { 13 if (cancel_drag_) 14 return DRAGDROP_S_CANCEL; 15 16 if (escape_pressed) { 17 OnDragSourceCancel(); 18 return DRAGDROP_S_CANCEL; 19 } 20 21 if (!(key_state & MK_LBUTTON)) { 22 OnDragSourceDrop(); 23 return DRAGDROP_S_DROP; 24 } 25 26 OnDragSourceMove(); 27 return S_OK; 28 } 29 30 HRESULT DragSourceWin::GiveFeedback(DWORD effect) { 31 return DRAGDROP_S_USEDEFAULTCURSORS; 32 } 33 34 HRESULT DragSourceWin::QueryInterface(const IID& iid, void** object) { 35 *object = NULL; 36 if (IsEqualIID(iid, IID_IUnknown) || IsEqualIID(iid, IID_IDropSource)) { 37 *object = this; 38 } else { 39 return E_NOINTERFACE; 40 } 41 AddRef(); 42 return S_OK; 43 } 44 45 ULONG DragSourceWin::AddRef() { 46 base::RefCountedThreadSafe<DragSourceWin>::AddRef(); 47 return 0; 48 } 49 50 ULONG DragSourceWin::Release() { 51 base::RefCountedThreadSafe<DragSourceWin>::Release(); 52 return 0; 53 } 54 55 } // namespace ui 56