- add sources.
[platform/framework/web/crosswalk.git] / src / ui / base / dragdrop / drag_source_win.cc
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