#include "wx/mstream.h"
#include "wx/image.h"
#include "wx/metafile.h"
+#include "wx/tokenzr.h"
+
+
#include "wx/mac/private.h"
#ifndef __DARWIN__
// wxFileDataObject
// ----------------------------------------------------------------------------
+void wxFileDataObject::GetFileNames(wxCharBuffer &buf) const
+{
+ wxString filenames;
+
+ for (size_t i = 0; i < m_filenames.GetCount(); i++)
+ {
+ filenames += m_filenames[i];
+ filenames += wxT('\n');
+ }
+
+ buf = filenames.fn_str();
+}
+
bool wxFileDataObject::GetDataHere( void *pBuf ) const
{
if (pBuf == NULL)
return false;
- wxString sFilenames;
+ wxCharBuffer buf;
+ GetFileNames( buf );
- for (size_t i = 0; i < m_filenames.GetCount(); i++)
- {
- sFilenames += m_filenames[i];
- sFilenames += (wxChar)0;
- }
-
- memcpy( pBuf, sFilenames.mbc_str(), sFilenames.Len() + 1 );
+ memcpy( pBuf, (const char*) buf, strlen(buf) + 1 );
return true;
}
size_t wxFileDataObject::GetDataSize() const
{
- size_t nRes = 0;
+ wxCharBuffer buf;
+ GetFileNames( buf );
- for (size_t i = 0; i < m_filenames.GetCount(); i++)
- {
- nRes += m_filenames[i].Len();
- nRes += 1;
- }
-
- return nRes + 1;
+ return strlen(buf) + 1;
}
-bool wxFileDataObject::SetData( size_t WXUNUSED(nSize), const void *pBuf )
+bool wxFileDataObject::SetData( size_t nSize, const void *pBuf )
{
- m_filenames.Empty();
-
- // only add if this is not an empty string
- // we can therefore clear the list by just setting an empty string
- if ((*(const char*)pBuf) != 0)
- AddFile( wxString::FromAscii( (char*)pBuf) );
+ wxString filenames;
+#if wxUSE_UNICODE
+ filenames = wxString( (const char*) pBuf , *wxConvFileName );
+#else
+ filenames = wxString( wxConvFileName->cMB2WX( pBuf ) , wxConvLocal );
+#endif
+ m_filenames = wxStringTokenize( filenames , wxT("\n") , wxTOKEN_STRTOK );
+
return true;
}