]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/ole/dropsrc.cpp
refactoring in preparation for further changes: moved data in a private struct, let...
[wxWidgets.git] / src / msw / ole / dropsrc.cpp
index 9aa2b238c5357d9e5957b50453ff7e704b5edff9..e9f543c59bcd70fd5a26738e08fea5c4f9ca0918 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     10.05.98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -17,7 +17,7 @@
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
   #pragma implementation "dropsrc.h"
 #endif
 
 #include "wx/log.h"
 #include "wx/dnd.h"
 
-#include <windows.h>
+#include "wx/msw/private.h"
 
-#if wxUSE_NORLANDER_HEADERS
+// for some compilers, the entire ole2.h must be included, not only oleauto.h
+#if wxUSE_NORLANDER_HEADERS || defined(__WATCOMC__) || defined(__WXWINCE__)
     #include <ole2.h>
 #endif
 
-#ifndef __WIN32__
-    #include <ole2.h>
-    #include <olestd.h>
-#endif
-
 #include <oleauto.h>
 
 #include "wx/msw/ole/oleutils.h"
@@ -71,6 +67,8 @@ public:
 private:
   DWORD         m_grfInitKeyState;  // button which started the d&d operation
   wxDropSource *m_pDropSource;      // pointer to C++ class we belong to
+
+    DECLARE_NO_COPY_CLASS(wxIDropSource)
 };
 
 // ============================================================================
@@ -93,7 +91,6 @@ wxIDropSource::wxIDropSource(wxDropSource *pDropSource)
 
   m_pDropSource = pDropSource;
   m_grfInitKeyState = 0;
-  m_cRef = 0;
 }
 
 // Name    : wxIDropSource::QueryContinueDrag
@@ -187,17 +184,18 @@ wxDropSource::~wxDropSource()
 // Name    : DoDragDrop
 // Purpose : start drag and drop operation
 // Returns : wxDragResult - the code of performed operation
-// Params  : [in] bool bAllowMove: if false, only copy is allowed
+// Params  : [in] int flags: specifies if moving is allowe (or only copying)
 // Notes   : you must call SetData() before if you had used def ctor
-wxDragResult wxDropSource::DoDragDrop(bool bAllowMove)
+wxDragResult wxDropSource::DoDragDrop(int flags)
 {
   wxCHECK_MSG( m_data != NULL, wxDragNone, wxT("No data in wxDropSource!") );
 
   DWORD dwEffect;
   HRESULT hr = ::DoDragDrop(m_data->GetInterface(),
                             m_pIDropSource,
-                            bAllowMove ? DROPEFFECT_COPY | DROPEFFECT_MOVE
-                                       : DROPEFFECT_COPY,
+                            (flags & wxDrag_AllowMove)
+                                ? DROPEFFECT_COPY | DROPEFFECT_MOVE
+                                : DROPEFFECT_COPY,
                             &dwEffect);
 
   if ( hr == DRAGDROP_S_CANCEL ) {
@@ -209,11 +207,8 @@ wxDragResult wxDropSource::DoDragDrop(bool bAllowMove)
     }
     else if ( dwEffect & DROPEFFECT_MOVE ) {
       // consistency check: normally, we shouldn't get "move" at all
-      // here if !bAllowMove, but in practice it does happen quite often
-      if ( bAllowMove )
-        return wxDragMove;
-      else
-        return wxDragCopy;
+      // here if we don't allow it, but in practice it does happen quite often
+      return (flags & wxDrag_AllowMove) ? wxDragMove : wxDragCopy;
     }
     else {
       // not copy or move
@@ -246,11 +241,11 @@ bool wxDropSource::GiveFeedback(wxDragResult effect)
     {
         ::SetCursor((HCURSOR)cursor.GetHCURSOR());
 
-        return TRUE;
+        return true;
     }
     else
     {
-        return FALSE;
+        return false;
     }
 }