///////////////////////////////////////////////////////////////////////////////
-// Name: ole/droptgt.h
+// Name: wx/msw/ole/droptgt.h
// Purpose: declaration of the wxDropTarget class
// Author: Vadim Zeitlin
// Modified by:
#ifndef _WX_OLEDROPTGT_H
#define _WX_OLEDROPTGT_H
-#ifdef __GNUG__
-#pragma interface "droptgt.h"
-#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 wxIDropTarget;
+struct wxIDropTargetHelper;
struct IDataObject;
// ----------------------------------------------------------------------------
// (all of them, including protected ones which are called by the class itself)
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxDropTarget : public wxDropTargetBase
+class WXDLLIMPEXP_CORE wxDropTarget : public wxDropTargetBase
{
public:
// ctor & dtor
virtual bool OnDrop(wxCoord x, wxCoord y);
virtual bool GetData();
+ // Can only be called during OnXXX methods.
+ wxDataFormat GetMatchingPair();
+
// implementation only from now on
// -------------------------------
// do we accept this kind of data?
- bool IsAcceptedData(IDataObject *pIDataSource) const;
+ bool MSWIsAcceptedData(IDataObject *pIDataSource) const;
// give us the data source from IDropTarget::Drop() - this is later used by
// GetData() when it's called from inside OnData()
- void SetDataSource(IDataObject *pIDataSource);
+ void MSWSetDataSource(IDataObject *pIDataSource);
+
+ // These functions take care of all things necessary to support native drag
+ // images.
+ //
+ // {Init,End}DragImageSupport() are called during Register/Revoke,
+ // UpdateDragImageOnXXX() functions are called on the corresponding drop
+ // target events.
+ void MSWInitDragImageSupport();
+ void MSWEndDragImageSupport();
+ void MSWUpdateDragImageOnData(wxCoord x, wxCoord y, wxDragResult res);
+ void MSWUpdateDragImageOnDragOver(wxCoord x, wxCoord y, wxDragResult res);
+ void MSWUpdateDragImageOnEnter(wxCoord x, wxCoord y, wxDragResult res);
+ void MSWUpdateDragImageOnLeave();
private:
// helper used by IsAcceptedData() and GetData()
- wxDataFormat GetSupportedFormat(IDataObject *pIDataSource) const;
+ wxDataFormat MSWGetSupportedFormat(IDataObject *pIDataSource) const;
- wxIDropTarget *m_pIDropTarget; // the pointer to our COM interface
- IDataObject *m_pIDataSource; // the pointer to the source data object
+ wxIDropTarget *m_pIDropTarget; // the pointer to our COM interface
+ IDataObject *m_pIDataSource; // the pointer to the source data object
+ wxIDropTargetHelper *m_dropTargetHelper; // the drop target helper
- DECLARE_NO_COPY_CLASS(wxDropTarget)
+ wxDECLARE_NO_COPY_CLASS(wxDropTarget);
};
+#endif //wxUSE_DRAG_AND_DROP
+
#endif //_WX_OLEDROPTGT_H