X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd77da975b1aeeb52c56d2aacb02beec039b5bc3..f2593d0ddae43a3e9054d2e9bb59646e19dffe73:/src/common/dobjcmn.cpp diff --git a/src/common/dobjcmn.cpp b/src/common/dobjcmn.cpp index de267315e2..a71231b2ae 100644 --- a/src/common/dobjcmn.cpp +++ b/src/common/dobjcmn.cpp @@ -97,11 +97,7 @@ wxDataObjectComposite::GetPreferredFormat(Direction WXUNUSED(dir)) const { wxSimpleDataObjectList::Node *node = m_dataObjects.Item( m_preferred ); -#ifdef __WXGTK__ - wxCHECK_MSG( node, wxDataFormat(wxDF_INVALID), wxT("no preferred format") ); -#else - wxCHECK_MSG( node, wxDataFormat((unsigned short) wxDF_INVALID), wxT("no preferred format") ); -#endif + wxCHECK_MSG( node, wxFormatInvalid, wxT("no preferred format") ); wxDataObjectSimple* dataObj = node->GetData(); @@ -233,6 +229,12 @@ void wxFileDataObjectBase::SetFilenames(const wxChar* filenames) // wxCustomDataObject // ---------------------------------------------------------------------------- +wxCustomDataObject::wxCustomDataObject(const wxDataFormat& format) + : wxDataObjectSimple(format) +{ + m_data = (void *)NULL; +} + wxCustomDataObject::~wxCustomDataObject() { Free(); @@ -287,3 +289,53 @@ bool wxCustomDataObject::SetData(size_t size, const void *buf) return TRUE; } +// ============================================================================ +// some common dnd related code +// ============================================================================ + +#if wxUSE_DRAG_AND_DROP + +#include "wx/dnd.h" + +// ---------------------------------------------------------------------------- +// wxTextDropTarget +// ---------------------------------------------------------------------------- + +// NB: we can't use "new" in ctor initializer lists because this provokes an +// internal compiler error with VC++ 5.0 (hey, even gcc compiles this!), +// so use SetDataObject() instead + +wxTextDropTarget::wxTextDropTarget() +{ + SetDataObject(new wxTextDataObject); +} + +wxDragResult wxTextDropTarget::OnData(wxCoord x, wxCoord y, wxDragResult def) +{ + if ( !GetData() ) + return wxDragNone; + + wxTextDataObject *dobj = (wxTextDataObject *)m_dataObject; + return OnDropText(x, y, dobj->GetText()) ? def : wxDragNone; +} + +// ---------------------------------------------------------------------------- +// wxFileDropTarget +// ---------------------------------------------------------------------------- + +wxFileDropTarget::wxFileDropTarget() +{ + SetDataObject(new wxFileDataObject); +} + +wxDragResult wxFileDropTarget::OnData(wxCoord x, wxCoord y, wxDragResult def) +{ + if ( !GetData() ) + return wxDragNone; + + wxFileDataObject *dobj = (wxFileDataObject *)m_dataObject; + return OnDropFiles(x, y, dobj->GetFilenames()) ? def : wxDragNone; +} + +#endif +