X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/427ff66291af2d8dd34ff5ee68c81436997144a1..1e1cc1ce95dde0c66df452cf438a05c5d6cac153:/src/mac/carbon/clipbrd.cpp diff --git a/src/mac/carbon/clipbrd.cpp b/src/mac/carbon/clipbrd.cpp index 942a17c6fb..91fc234410 100644 --- a/src/mac/carbon/clipbrd.cpp +++ b/src/mac/carbon/clipbrd.cpp @@ -10,7 +10,6 @@ ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ -#pragma implementation #pragma implementation "clipbrd.h" #endif @@ -46,13 +45,13 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) #endif void * data = NULL ; Size byteCount; - + switch (dataFormat.GetType()) { case wxDF_OEMTEXT: dataFormat = wxDF_TEXT; // fall through - + case wxDF_TEXT: break; case wxDF_UNICODETEXT: @@ -66,33 +65,33 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) 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 @@ -103,7 +102,7 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) } } } - + #else long offset ; Handle datahandle = NewHandle(0) ; @@ -114,17 +113,17 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) { 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 ; } @@ -133,22 +132,13 @@ void *wxGetClipboardData(wxDataFormat dataFormat, long *len) 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; @@ -215,12 +205,8 @@ bool wxClipboard::IsOpened() const 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 ); } @@ -257,8 +243,7 @@ bool wxClipboard::AddData( wxDataObject *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 ; @@ -289,7 +274,7 @@ bool wxClipboard::AddData( wxDataObject *data ) { bool created = false ; PicHandle pict = NULL ; - + wxBitmapDataObject* bitmapDataObject = (wxBitmapDataObject*) data ; pict = (PicHandle) bitmapDataObject->GetBitmap().GetPict( &created ) ; @@ -324,13 +309,13 @@ bool wxClipboard::IsSupported( const wxDataFormat &dataFormat ) #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) @@ -340,7 +325,7 @@ bool wxClipboard::IsSupported( const wxDataFormat &dataFormat ) } } return FALSE; - + #else long offset ; Handle datahandle = NewHandle(0) ; @@ -369,12 +354,12 @@ bool wxClipboard::GetData( wxDataObject& data ) 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 ) ; } @@ -389,7 +374,7 @@ bool wxClipboard::GetData( wxDataObject& data ) } } /* get formats from wxDataObjects */ - if ( !transferred ) + if ( !transferred ) { for (size_t i = 0; !transferred && i < formatcount ; i++) {