+#if TARGET_CARBON
+ ScrapRef scrapRef;
+
+ err = GetCurrentScrap( &scrapRef );
+ if ( err != noTypeErr && err != memFullErr )
+ {
+ ScrapFlavorFlags flavorFlags;
+ Size byteCount;
+
+ if (( err = GetScrapFlavorFlags( scrapRef, dataFormat.GetFormatId(), &flavorFlags )) == noErr)
+ {
+ if (( err = GetScrapFlavorSize( scrapRef, dataFormat.GetFormatId(), &byteCount )) == noErr)
+ {
+ if ( dataFormat.GetType() == wxDF_TEXT )
+ byteCount++ ;
+
+ data = new char[ byteCount ] ;
+ if (( err = GetScrapFlavorData( scrapRef, dataFormat.GetFormatId(), &byteCount , data )) == noErr )
+ {
+ *len = byteCount ;
+ if ( dataFormat.GetType() == wxDF_TEXT )
+ ((char*)data)[byteCount] = 0 ;
+ }
+ else
+ {
+ delete[] data ;
+ data = NULL ;
+ }
+ }
+ }
+ }
+
+#else
+ long offset ;
+ Handle datahandle = NewHandle(0) ;
+ HLock( datahandle ) ;
+ GetScrap( datahandle , dataFormat.GetFormatId() , &offset ) ;
+ HUnlock( datahandle ) ;
+ if ( GetHandleSize( datahandle ) > 0 )
+ {
+ long byteCount = GetHandleSize( datahandle ) ;
+ if ( dataFormat.GetType() == wxDF_TEXT )
+ data = new char[ byteCount + 1] ;
+ else
+ data = new char[ byteCount ] ;
+
+ memcpy( (char*) data , (char*) *datahandle , byteCount ) ;
+ if ( dataFormat.GetType() == wxDF_TEXT )
+ ((char*)data)[byteCount] = 0 ;
+ * len = byteCount ;
+ }
+ DisposeHandle( datahandle ) ;
+#endif
+ if ( err )
+ {
+ wxLogSysError(_("Failed to get clipboard data."));