]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/ole/dropsrc.h
OS X savvy implementation
[wxWidgets.git] / include / wx / msw / ole / dropsrc.h
index aa9283f65cf82e3c067c322403cb4612bf05d1a0..2b383a3ab6c51da1f342cbc07920ed7aaec0db20 100644 (file)
 #ifndef   _WX_OLEDROPSRC_H
 #define   _WX_OLEDROPSRC_H
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #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
@@ -28,12 +26,22 @@ class wxIDropSource;
 class WXDLLEXPORT wxDataObject;
 class WXDLLEXPORT wxWindow;
 
+// ----------------------------------------------------------------------------
+// macros
+// ----------------------------------------------------------------------------
+
+// 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(_T(#name))
+
 // ----------------------------------------------------------------------------
 // wxDropSource is used to start the drag-&-drop operation on associated
 // wxDataObject object. It's responsible for giving UI feedback while dragging.
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDropSource
+class WXDLLEXPORT wxDropSource : public wxDropSourceBase
 {
 public:
     // ctors: if you use default ctor you must call SetData() later!
@@ -41,29 +49,35 @@ public:
     // 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 wxIcon &go = wxNullIcon,
-            const wxIcon &stop = wxNullIcon );
+                 const wxCursor &cursorCopy = wxNullCursor,
+                 const wxCursor &cursorMove = wxNullCursor,
+                 const wxCursor &cursorStop = wxNullCursor);
     wxDropSource(wxDataObject& data,
-            wxWindow *win = NULL,
-            const wxIcon &go = wxNullIcon,
-            const wxIcon &stop = wxNullIcon );
+                 wxWindow *win = NULL,
+                 const wxCursor &cursorCopy = wxNullCursor,
+                 const wxCursor &cursorMove = wxNullCursor,
+                 const wxCursor &cursorStop = wxNullCursor);
 
     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
-    virtual wxDragResult DoDragDrop(bool bAllowMove = FALSE);
+    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);
+    virtual bool GiveFeedback(wxDragResult effect);
 
 protected:
     void Init();
 
 private:
     wxIDropSource *m_pIDropSource;  // the pointer to COM interface
+
+    DECLARE_NO_COPY_CLASS(wxDropSource)
 };
 
+#endif  //wxUSE_DRAG_AND_DROP
+
 #endif  //_WX_OLEDROPSRC_H