+ Size dataSize;
+ Ptr theData;
+
+ GetFlavorDataSize( (DragReference)m_currentDrag, theItem, theType, &dataSize );
+ if (theType == kScrapFlavorTypeText)
+ {
+ // this increment is only valid for allocating:
+ // on the next GetFlavorData call it is reset again to the original value
+ dataSize++;
+ }
+ else if (theType == kScrapFlavorTypeUnicode)
+ {
+ // this increment is only valid for allocating:
+ // on the next GetFlavorData call it is reset again to the original value
+ dataSize++;
+ dataSize++;
+ }
+
+ if (dataSize > 0)
+ theData = new char[dataSize];
+ else
+ theData = NULL;
+
+ GetFlavorData( (DragReference)m_currentDrag, theItem, theType, (void*)theData, &dataSize, 0L );
+ switch (theType)
+ {
+ case kScrapFlavorTypeText:
+ theData[dataSize] = 0;
+ m_dataObject->SetData( wxDataFormat(wxDF_TEXT), dataSize, theData );
+ break;
+
+#if wxUSE_UNICODE
+ case kScrapFlavorTypeUnicode:
+ theData[dataSize + 0] =
+ theData[dataSize + 1] = 0;
+ m_dataObject->SetData( wxDataFormat(wxDF_UNICODETEXT), dataSize, theData );
+ break;
+#endif
+
+ case kDragFlavorTypeHFS:
+ if (theData != NULL)
+ {
+ HFSFlavor* theFile = (HFSFlavor*)theData;
+#ifndef __LP64__
+ wxString name = wxMacFSSpec2MacFilename( &theFile->fileSpec );
+
+ if (!name.empty())
+ filenamesPassed += name + wxT("\n");
+#endif
+ }
+ break;
+
+ default:
+ m_dataObject->SetData( format, dataSize, theData );
+ break;
+ }
+
+ delete [] theData;