/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
-#pragma implementation
#pragma implementation "clipbrd.h"
#endif
#endif
void * data = NULL ;
Size byteCount;
-
+
switch (dataFormat.GetType())
{
case wxDF_OEMTEXT:
dataFormat = wxDF_TEXT;
// fall through
-
+
case wxDF_TEXT:
break;
case wxDF_UNICODETEXT:
return NULL;
}
}
-
+
#if TARGET_CARBON
ScrapRef scrapRef;
-
+
err = GetCurrentScrap( &scrapRef );
- if ( err != noTypeErr && err != memFullErr )
+ if ( err != noTypeErr && err != memFullErr )
{
ScrapFlavorFlags flavorFlags;
-
+
if (( err = GetScrapFlavorFlags( scrapRef, dataFormat.GetFormatId(), &flavorFlags )) == noErr)
{
if (( err = GetScrapFlavorSize( scrapRef, dataFormat.GetFormatId(), &byteCount )) == noErr)
{
Size allocSize = byteCount ;
- if ( dataFormat.GetType() == wxDF_TEXT )
+ if ( dataFormat.GetType() == wxDF_TEXT )
allocSize += 1 ;
- else if ( dataFormat.GetType() == wxDF_UNICODETEXT )
+ else if ( dataFormat.GetType() == wxDF_UNICODETEXT )
allocSize += 2 ;
-
+
data = new char[ allocSize ] ;
-
+
if (( err = GetScrapFlavorData( scrapRef, dataFormat.GetFormatId(), &byteCount , data )) == noErr )
{
*len = allocSize ;
- if ( dataFormat.GetType() == wxDF_TEXT )
+ if ( dataFormat.GetType() == wxDF_TEXT )
((char*)data)[byteCount] = 0 ;
- if ( dataFormat.GetType() == wxDF_UNICODETEXT )
+ if ( dataFormat.GetType() == wxDF_UNICODETEXT )
((wxChar*)data)[byteCount/2] = 0 ;
}
else
}
}
}
-
+
#else
long offset ;
Handle datahandle = NewHandle(0) ;
{
byteCount = GetHandleSize( datahandle ) ;
Size allocSize = byteCount ;
- if ( dataFormat.GetType() == wxDF_TEXT )
+ if ( dataFormat.GetType() == wxDF_TEXT )
allocSize += 1 ;
- else if ( dataFormat.GetType() == wxDF_UNICODETEXT )
+ else if ( dataFormat.GetType() == wxDF_UNICODETEXT )
allocSize += 2 ;
data = new char[ allocSize ] ;
memcpy( (char*) data , (char*) *datahandle , byteCount ) ;
- if ( dataFormat.GetType() == wxDF_TEXT )
+ if ( dataFormat.GetType() == wxDF_TEXT )
((char*)data)[byteCount] = 0 ;
- if ( dataFormat.GetType() == wxDF_UNICODETEXT )
+ if ( dataFormat.GetType() == wxDF_UNICODETEXT )
((wxChar*)data)[byteCount/2] = 0 ;
*len = byteCount ;
}
if ( err )
{
wxLogSysError(_("Failed to get clipboard data."));
-
+
return NULL ;
}
- if ( dataFormat.GetType() == wxDF_TEXT && wxApp::s_macDefaultEncodingIsPC )
+ if ( dataFormat.GetType() == wxDF_TEXT )
{
- wxString st = wxMacMakeStringFromCString( (char*) data ) ;
-#if wxUSE_UNICODE
- wxCharBuffer buf = st.ToAscii() ;
-#else
- char* buf = st ;
-#endif
- char* newdata = new char[strlen(buf)+1] ;
- memcpy( newdata , buf , strlen(buf)+1 ) ;
- delete[] ((char*) data ) ;
- data = newdata ;
+ wxMacConvertNewlines10To13( (char*) data ) ;
}
return data;
bool wxClipboard::SetData( wxDataObject *data )
{
- wxCHECK_MSG( m_open, FALSE, wxT("clipboard not open") );
-
- wxCHECK_MSG( data, FALSE, wxT("data is invalid") );
-
- Clear();
-
+ // as we can only store one wxDataObject, this is the same in this
+ // implementation
return AddData( data );
}
case wxDF_OEMTEXT:
{
wxTextDataObject* textDataObject = (wxTextDataObject*) data;
- wxString str(textDataObject->GetText());
- wxCharBuffer buf = wxMacStringToCString( str ) ;
+ wxCharBuffer buf = textDataObject->GetText().mb_str() ;
err = UMAPutScrap( strlen(buf) , kScrapFlavorTypeText , (void*) buf.data() ) ;
}
break ;
{
bool created = false ;
PicHandle pict = NULL ;
-
+
wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data ;
pict = (PicHandle) bitmapDataObject->GetBitmap().GetPict( &created ) ;
#if TARGET_CARBON
OSStatus err = noErr;
ScrapRef scrapRef;
-
+
err = GetCurrentScrap( &scrapRef );
- if ( err != noTypeErr && err != memFullErr )
+ 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)
}
}
return FALSE;
-
+
#else
long offset ;
Handle datahandle = NewHandle(0) ;
for (size_t i = 0; !transferred && i < formatcount ; i++)
{
wxDataFormat format = array[i] ;
- if ( m_data->IsSupported( format ) )
+ if ( m_data->IsSupported( format ) )
{
int size = m_data->GetDataSize( format );
transferred = true ;
- if (size == 0)
+ if (size == 0)
{
data.SetData(format , 0 , 0 ) ;
}
}
}
/* get formats from wxDataObjects */
- if ( !transferred )
+ if ( !transferred )
{
for (size_t i = 0; !transferred && i < formatcount ; i++)
{