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 wxMacConvertNewlines10To13( wxString *data ) ;
|
||||||
|
|
||||||
WXDLLIMPEXP_BASE void wxMacConvertNewlines13To10( char * 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 void wxMacConvertNewlines10To13( char * data ) ;
|
||||||
|
|
||||||
WXDLLIMPEXP_BASE wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding) ;
|
WXDLLIMPEXP_BASE wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding) ;
|
||||||
|
@@ -487,9 +487,13 @@ bool wxDataObject::GetFromPasteboard( void * pb )
|
|||||||
memset( buf, 0, flavorDataSize + 4 );
|
memset( buf, 0, flavorDataSize + 4 );
|
||||||
memcpy( buf, CFDataGetBytePtr( flavorData ), flavorDataSize );
|
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 );
|
SetData( flavorFormat, flavorDataSize, buf );
|
||||||
transferred = true;
|
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 )
|
if ( *data == 0x0d )
|
||||||
*data = 0x0a;
|
*data = 0x0a;
|
||||||
|
Reference in New Issue
Block a user