Don't corrupt pasted UTF-16 text in wxOSX
Fix breakage introduced by 587067bc68
:
pasting text could mangle some Unicode characters if it was in UTF-16.
The code in that commit converted newlines all right, but it also
converted _any_ occurrence of 0x0d to 0x0a, which wasn't very Unicode
friendly.
Fixed by partially reverting the change and adding a dedicated UTF-16
variant of wxMacConvertNewlines13To10() instead.
This commit is contained in:
@@ -30,7 +30,7 @@ WXDLLIMPEXP_BASE void wxMacConvertNewlines13To10( wxString *data ) ;
|
||||
WXDLLIMPEXP_BASE void wxMacConvertNewlines10To13( wxString *data ) ;
|
||||
|
||||
WXDLLIMPEXP_BASE void wxMacConvertNewlines13To10( char * data ) ;
|
||||
WXDLLIMPEXP_BASE void wxMacConvertNewlines13To10( char * data, size_t len ) ;
|
||||
WXDLLIMPEXP_BASE void wxMacConvertNewlines13To10( wxChar16 * data ) ;
|
||||
WXDLLIMPEXP_BASE void wxMacConvertNewlines10To13( char * data ) ;
|
||||
|
||||
WXDLLIMPEXP_BASE wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding) ;
|
||||
|
@@ -487,9 +487,13 @@ bool wxDataObject::GetFromPasteboard( void * pb )
|
||||
memset( buf, 0, flavorDataSize + 4 );
|
||||
memcpy( buf, CFDataGetBytePtr( flavorData ), flavorDataSize );
|
||||
|
||||
if (dataFormat.GetType() == wxDF_TEXT || dataFormat.GetType() == wxDF_UNICODETEXT)
|
||||
if (dataFormat.GetType() == wxDF_TEXT)
|
||||
{
|
||||
wxMacConvertNewlines13To10( (char*) buf, flavorDataSize );
|
||||
wxMacConvertNewlines13To10((char*) buf);
|
||||
}
|
||||
else if (dataFormat.GetType() == wxDF_UNICODETEXT)
|
||||
{
|
||||
wxMacConvertNewlines13To10((wxChar16*) buf);
|
||||
}
|
||||
SetData( flavorFormat, flavorDataSize, buf );
|
||||
transferred = true;
|
||||
|
@@ -34,9 +34,9 @@ void wxMacConvertNewlines13To10( char * data )
|
||||
}
|
||||
}
|
||||
|
||||
void wxMacConvertNewlines13To10( char * data, size_t len )
|
||||
void wxMacConvertNewlines13To10( wxChar16 * data )
|
||||
{
|
||||
for ( ; len; ++data, --len )
|
||||
for ( ; *data; ++data )
|
||||
{
|
||||
if ( *data == 0x0d )
|
||||
*data = 0x0a;
|
||||
|
Reference in New Issue
Block a user