// 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
//-------------------------------------------------------------------------
-class WXDLLEXPORT wxDropSource: public wxDropSourceBase
+class WXDLLIMPEXP_CORE wxDropSource: public wxDropSourceBase
{
public:
/* constructor. set data later with SetData() */
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 WXDLLIMPEXP_CORE 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 bool OnData(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);
-
- DRAGINFO* m_pDragInfo;
- DRAGTRANSFER* m_pDragTransfer;
-};
-
-// ----------------------------------------------------------------------------
-// A simple wxDropTarget derived class for text data: you only need to
-// override OnDropText() to get something working
-// ----------------------------------------------------------------------------
+ virtual bool GetData(void);
+ wxDataFormat GetSupportedFormat(PDRAGINFO pDataSource) const;
+ void Release(void);
-class WXDLLEXPORT wxTextDropTarget : public wxDropTarget
-{
-public:
- wxTextDropTarget();
- virtual ~wxTextDropTarget();
-
- virtual bool OnDropText( wxCoord x
- ,wxCoord y
- ,const wxString& rText
- ) = 0;
-
- virtual bool OnData( wxCoord x
- ,wxCoord y
- );
- virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult vResult);
-};
-
-// ----------------------------------------------------------------------------
-// A drop target which accepts files (dragged from File Manager or Explorer)
-// ----------------------------------------------------------------------------
-
-class WXDLLEXPORT wxFileDropTarget : public wxDropTarget
-{
-public:
- wxFileDropTarget();
- virtual ~wxFileDropTarget();
-
- // parameters are the number of files and the array of file names
- virtual bool OnDropFiles( wxCoord x
- ,wxCoord y
- ,const wxArrayString& rFilenames
- ) = 0;
-
- virtual bool OnData( wxCoord x
- ,wxCoord y
- );
- virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult vResult);
-};
+private:
+ CIDropTarget* m_pDropTarget;
+}; // end of CLASS wxDropTarget
#endif //__OS2DNDH__