]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/ole/dropsrc.h
Fix crash when editing wxDVC items in place in wxOSX/Cocoa.
[wxWidgets.git] / include / wx / msw / ole / dropsrc.h
index a36324a994e6247929e64583e46d3fabedaa4801..7ef2818a0ad622d8ac372bb6867eab2ce1764e7f 100644 (file)
@@ -2,7 +2,7 @@
 // Name:        ole/dropsrc.h
 // Purpose:     declaration of the wxDropSource class
 // Author:      Vadim Zeitlin
-// Modified by: 
+// Modified by:
 // Created:     06.03.98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 #ifndef   _WX_OLEDROPSRC_H
 #define   _WX_OLEDROPSRC_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#if !wxUSE_DRAG_AND_DROP
-  #error  "You should #define wxUSE_DRAG_AND_DROP to 1 to compile this file!"
-#endif  //WX_DRAG_DROP
+#if wxUSE_DRAG_AND_DROP
 
 // ----------------------------------------------------------------------------
 // forward declarations
 // ----------------------------------------------------------------------------
+
 class wxIDropSource;
-class wxDataObject;
+class WXDLLIMPEXP_FWD_CORE wxDataObject;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
+
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
 
-enum wxDragResult
-  {
-    wxDragError,    // error prevented the d&d operation from completing
-    wxDragNone,     // drag target didn't accept the data
-    wxDragCopy,     // the data was successfully copied
-    wxDragMove,     // the data was successfully moved
-    wxDragCancel    // the operation was cancelled by user (not an error)
-  };
+// this macro may be used instead for wxDropSource ctor arguments: it will use
+// the cursor 'name' from the resources under MSW, but will expand to
+// something else under GTK. If you don't use it, you will have to use #ifdef
+// in the application code.
+#define wxDROP_ICON(name)   wxCursor(wxT(#name))
 
 // ----------------------------------------------------------------------------
 // wxDropSource is used to start the drag-&-drop operation on associated
 // wxDataObject object. It's responsible for giving UI feedback while dragging.
 // ----------------------------------------------------------------------------
-class wxDropSource
+
+class WXDLLIMPEXP_CORE wxDropSource : public wxDropSourceBase
 {
 public:
-  // ctors: if you use default ctor you must call SetData() later!
-  // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK
-  //     compatibility
-  wxDropSource(wxWindow *win = NULL);
-  wxDropSource(wxDataObject& data, wxWindow *win = NULL);
-
-  void SetData(wxDataObject& data);
+    // ctors: if you use default ctor you must call SetData() later!
+    //
+    // NB: the "wxWindow *win" parameter is unused and is here only for wxGTK
+    //     compatibility, as well as both icon parameters
+    wxDropSource(wxWindow *win = NULL,
+                 const wxCursor &cursorCopy = wxNullCursor,
+                 const wxCursor &cursorMove = wxNullCursor,
+                 const wxCursor &cursorStop = wxNullCursor);
+    wxDropSource(wxDataObject& data,
+                 wxWindow *win = NULL,
+                 const wxCursor &cursorCopy = wxNullCursor,
+                 const wxCursor &cursorMove = wxNullCursor,
+                 const wxCursor &cursorStop = wxNullCursor);
 
-  virtual ~wxDropSource();
+    virtual ~wxDropSource();
 
-  // do it (call this in response to a mouse button press, for example)
-  // params: if bAllowMove is false, data can be only copied
-  wxDragResult DoDragDrop(bool bAllowMove = FALSE);
+    // do it (call this in response to a mouse button press, for example)
+    // params: if bAllowMove is false, data can be only copied
+    virtual wxDragResult DoDragDrop(int flags = wxDrag_CopyOnly);
 
-  // overridable: you may give some custom UI feedback during d&d operation
-  // in this function (it's called on each mouse move, so it shouldn't be too
-  // slow). Just return false if you want default feedback.
-  virtual bool GiveFeedback(wxDragResult effect, bool bScrolling);
+    // overridable: you may give some custom UI feedback during d&d operation
+    // in this function (it's called on each mouse move, so it shouldn't be
+    // too slow). Just return false if you want default feedback.
+    virtual bool GiveFeedback(wxDragResult effect);
 
 protected:
-  void Init();
-
-  wxDataObject  *m_pData;         // pointer to associated data object
+    void Init();
 
 private:
-  wxIDropSource *m_pIDropSource;  // the pointer to COM interface
+    wxIDropSource *m_pIDropSource;  // the pointer to COM interface
+
+    wxDECLARE_NO_COPY_CLASS(wxDropSource);
 };
 
+#endif  //wxUSE_DRAG_AND_DROP
+
 #endif  //_WX_OLEDROPSRC_H