diff --git a/include/wx/dataview.h b/include/wx/dataview.h index a1c166ad21..5b556a4c13 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -972,6 +972,7 @@ protected: #if wxUSE_DRAG_AND_DROP wxDataObject *m_dataObject; + wxMemoryBuffer m_dataBuf; wxDataFormat m_dataFormat; void* m_dataBuffer; size_t m_dataSize; diff --git a/src/common/datavcmn.cpp b/src/common/datavcmn.cpp index a257e1a365..a704326f49 100644 --- a/src/common/datavcmn.cpp +++ b/src/common/datavcmn.cpp @@ -1812,7 +1812,17 @@ void wxDataViewEvent::InitData(wxDataObjectComposite* obj, wxDataFormat format) SetDataFormat(format); SetDataObject(obj->GetObject(format)); - SetDataSize(obj->GetDataSize(format)); + + const size_t size = obj->GetDataSize(format); + SetDataSize(size); + + if ( size ) + { + obj->GetDataHere(format, m_dataBuf.GetWriteBuf(size)); + m_dataBuf.UngetWriteBuf(size); + + SetDataBuffer(m_dataBuf.GetData()); + } } #endif // wxUSE_DRAG_AND_DROP