Home | History | Annotate | Download | only in dragdrop
      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