Updated version to 2.5.5
[wxWidgets.git] / include / wx / os2 / dnd.h
index e72f3e9e9e22e22364364bf2cd76c397227f6941..2750c04c169bb65a5dc8db7294f66acf6ab3dc95 100644 (file)
@@ -6,21 +6,25 @@
 // Created:     10/21/99
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 David Webster
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 
 #ifndef __OS2DNDH__
 #define __OS2DNDH__
 
-#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
 
+#define INCL_WINSTDDRAG
+#include <os2.h>
+#ifndef __EMX__
+#include <pmstddlg.h>
+#endif
+
+class CIDropTarget;
+
 //-------------------------------------------------------------------------
 // wxDropSource
 //-------------------------------------------------------------------------
@@ -38,42 +42,58 @@ public:
     virtual ~wxDropSource();
 
     /* start drag action */
-    virtual wxDragResult DoDragDrop(bool bAllowMove = FALSE);
+    virtual wxDragResult DoDragDrop(int flags = wxDrag_CopyOnly);
+    virtual bool         GiveFeedback(wxDragResult eEffect);
 
 protected:
     void Init(void);
-    bool                            m_bLazyDrag;
 
-    DRAGIMAGE*                      m_pDragImage;
-    DRAGINFO*                       m_pDragInfo;
-    DRAGTRANSFER*                   m_pDragTransfer;
-};
+    ULONG                           m_ulItems;
+    PDRAGINFO                       m_pDragInfo;
+    DRAGIMAGE                       m_vDragImage;
+    PDRAGITEM                       m_pDragItem;
+    wxWindow*                       m_pWindow;
+}; // end of CLASS wxDropSource
 
 //-------------------------------------------------------------------------
 // wxDropTarget
 //-------------------------------------------------------------------------
 
-class WXDLLEXPORT wxDropTarget: public wxDropTargetBase
+class WXDLLEXPORT wxDropTarget : public wxDropTargetBase
 {
 public:
-    wxDropTarget(wxDataObject *dataObject = (wxDataObject*)NULL);
+    wxDropTarget(wxDataObject* pDataObject = (wxDataObject*)NULL);
     virtual ~wxDropTarget();
 
-    void Register(WXHWND hwnd);
-    void Revoke(WXHWND hwnd);
-
-    virtual wxDragResult OnDragOver(wxCoord x, wxCoord y, wxDragResult def);
-    virtual bool OnDrop(wxCoord x, wxCoord y);
-    virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult vResult);
-    virtual bool GetData();
+    //
+    // These functions are called when data is moved over position (x, y) and
+    // may return either wxDragCopy, wxDragMove or wxDragNone depending on
+    // what would happen if the data were dropped here.
+    //
+    // The last parameter is what would happen by default and is determined by
+    // the platform-specific logic (for example, under Windows it's wxDragCopy
+    // if Ctrl key is pressed and wxDragMove otherwise) except that it will
+    // always be wxDragNone if the carried data is in an unsupported format.
+    //
+    // OnData must be implemented and other should be overridden by derived classes
+    //
+    virtual wxDragResult OnData( wxCoord      vX
+                                ,wxCoord      vY
+                                ,wxDragResult eResult
+                               );
+    virtual bool         OnDrop( wxCoord vX
+                                ,wxCoord vY
+                               );
+            bool         IsAcceptedData(PDRAGINFO pDataSource) const;
 
-  // implementation
 protected:
-    virtual bool IsAcceptable(DRAGINFO* pInfo);
+    virtual bool         GetData(void);
+            wxDataFormat GetSupportedFormat(PDRAGINFO pDataSource) const;
+            void         Release(void);
 
-    DRAGINFO*                       m_pDragInfo;
-    DRAGTRANSFER*                   m_pDragTransfer;
-};
+private:
+    CIDropTarget*                   m_pDropTarget;
+}; // end of CLASS wxDropTarget
 
 #endif //__OS2DNDH__