/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
-#pragma implementation
#pragma implementation "clipbrd.h"
#endif
case wxDF_TEXT:
break;
+ case wxDF_UNICODETEXT:
+ break;
case wxDF_BITMAP :
case wxDF_METAFILE :
break ;
{
if (( err = GetScrapFlavorSize( scrapRef, dataFormat.GetFormatId(), &byteCount )) == noErr)
{
- if ( dataFormat.GetType() == wxDF_TEXT )
- byteCount++ ;
+ Size allocSize = byteCount ;
+ if ( dataFormat.GetType() == wxDF_TEXT )
+ allocSize += 1 ;
+ else if ( dataFormat.GetType() == wxDF_UNICODETEXT )
+ allocSize += 2 ;
- data = new char[ byteCount ] ;
+ data = new char[ allocSize ] ;
+
if (( err = GetScrapFlavorData( scrapRef, dataFormat.GetFormatId(), &byteCount , data )) == noErr )
{
- *len = byteCount ;
+ *len = allocSize ;
if ( dataFormat.GetType() == wxDF_TEXT )
((char*)data)[byteCount] = 0 ;
+ if ( dataFormat.GetType() == wxDF_UNICODETEXT )
+ ((wxChar*)data)[byteCount/2] = 0 ;
}
else
{
if ( GetHandleSize( datahandle ) > 0 )
{
byteCount = GetHandleSize( datahandle ) ;
+ Size allocSize = byteCount ;
if ( dataFormat.GetType() == wxDF_TEXT )
- data = new char[ byteCount + 1] ;
- else
- data = new char[ byteCount ] ;
-
+ allocSize += 1 ;
+ else if ( dataFormat.GetType() == wxDF_UNICODETEXT )
+ allocSize += 2 ;
+
+ data = new char[ allocSize ] ;
+
memcpy( (char*) data , (char*) *datahandle , byteCount ) ;
if ( dataFormat.GetType() == wxDF_TEXT )
((char*)data)[byteCount] = 0 ;
+ if ( dataFormat.GetType() == wxDF_UNICODETEXT )
+ ((wxChar*)data)[byteCount/2] = 0 ;
*len = byteCount ;
}
DisposeHandle( datahandle ) ;
return NULL ;
}
+
if ( dataFormat.GetType() == wxDF_TEXT && wxApp::s_macDefaultEncodingIsPC )
{
- wxMacConvertToPC((char*)data,(char*)data,byteCount) ;
+ wxString st = wxMacMakeStringFromCString( (char*) data ) ;
+#if wxUSE_UNICODE
+ wxCharBuffer buf = st.ToAscii() ;
+#else
+ const char* buf = st ;
+#endif
+ char* newdata = new char[strlen(buf)+1] ;
+ memcpy( newdata , buf , strlen(buf)+1 ) ;
+ delete[] ((char*) data ) ;
+ data = newdata ;
}
+
return data;
}
{
wxTextDataObject* textDataObject = (wxTextDataObject*) data;
wxString str(textDataObject->GetText());
- wxString mac ;
- if ( wxApp::s_macDefaultEncodingIsPC )
- {
- mac = wxMacMakeMacStringFromPC(textDataObject->GetText()) ;
- }
- else
- {
- mac = textDataObject->GetText() ;
- }
- err = UMAPutScrap( mac.Length() , 'TEXT' , (void*) mac.c_str() ) ;
+ wxCharBuffer buf = wxMacStringToCString( str ) ;
+ err = UMAPutScrap( strlen(buf) , kScrapFlavorTypeText , (void*) buf.data() ) ;
}
break ;
-
+#if wxUSE_UNICODE
+ case wxDF_UNICODETEXT :
+ {
+ wxTextDataObject* textDataObject = (wxTextDataObject*) data;
+ wxString str(textDataObject->GetText());
+ err = UMAPutScrap( str.Length() * sizeof(wxChar) , kScrapFlavorTypeUnicode , (void*) str.wc_str() ) ;
+ }
+ break ;
+#endif
#if wxUSE_DRAG_AND_DROP
case wxDF_METAFILE:
{
wxMetafile metaFile = metaFileDataObject->GetMetafile();
PicHandle pict = (PicHandle) metaFile.GetHMETAFILE() ;
HLock( (Handle) pict ) ;
- err = UMAPutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ;
+ err = UMAPutScrap( GetHandleSize( (Handle) pict ) , kScrapFlavorTypePicture , *pict ) ;
HUnlock( (Handle) pict ) ;
}
break ;
pict = (PicHandle) bitmapDataObject->GetBitmap().GetPict( &created ) ;
HLock( (Handle) pict ) ;
- err = UMAPutScrap( GetHandleSize( (Handle) pict ) , 'PICT' , *pict ) ;
+ err = UMAPutScrap( GetHandleSize( (Handle) pict ) , kScrapFlavorTypePicture , *pict ) ;
HUnlock( (Handle) pict ) ;
if ( created )
KillPicture( pict ) ;