X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9e2896e5c8944c5f5227fa080e1b781c4a6f2600..438959cca892a7651634cc3a7aad4819ac49b23c:/include/wx/msw/ole/droptgt.h?ds=sidebyside diff --git a/include/wx/msw/ole/droptgt.h b/include/wx/msw/ole/droptgt.h index 2e4a4f4f98..7b65990922 100644 --- a/include/wx/msw/ole/droptgt.h +++ b/include/wx/msw/ole/droptgt.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: ole/droptgt.h +// Name: wx/msw/ole/droptgt.h // Purpose: declaration of the wxDropTarget class // Author: Vadim Zeitlin // Modified by: @@ -12,19 +12,14 @@ #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; // ---------------------------------------------------------------------------- @@ -37,7 +32,7 @@ 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 @@ -53,53 +48,43 @@ public: 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; - - wxIDropTarget *m_pIDropTarget; // the pointer to our COM interface - IDataObject *m_pIDataSource; // the pointer to the source data object -}; - -// ---------------------------------------------------------------------------- -// A simple wxDropTarget derived class for text data: you only need to -// override OnDropText() to get something working -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxTextDropTarget : public wxDropTarget -{ -public: - wxTextDropTarget(); + wxDataFormat MSWGetSupportedFormat(IDataObject *pIDataSource) const; - virtual bool OnDropText(wxCoord x, wxCoord y, const wxString& text) = 0; + 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 - virtual bool OnData(wxCoord x, wxCoord y); + wxDECLARE_NO_COPY_CLASS(wxDropTarget); }; -// ---------------------------------------------------------------------------- -// A drop target which accepts files (dragged from File Manager or Explorer) -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxFileDropTarget : public wxDropTarget -{ -public: - wxFileDropTarget(); - - // parameters are the number of files and the array of file names - virtual bool OnDropFiles(wxCoord x, wxCoord y, - const wxArrayString& filenames) = 0; - - virtual bool OnData(wxCoord x, wxCoord y); -}; +#endif //wxUSE_DRAG_AND_DROP #endif //_WX_OLEDROPTGT_H