#include <Scrap.h>
#endif
#include <MacTextEditor.h>
-#include "ATSUnicode.h"
-#include "TextCommon.h"
-#include "TextEncodingConverter.h"
+#include <ATSUnicode.h>
+#include <TextCommon.h>
+#include <TextEncodingConverter.h>
#include "wx/mac/uma.h"
#define TE_UNLIMITED_LENGTH 0xFFFFFFFFUL
// moment is to avoid setting the true focus on the control, the proper solution at the end would be to have
// an alternate path for carbon key events that routes automatically into the same wx flow of events
-#include "MacTextEditor.h"
-
/* part codes */
/* kmUPTextPart is the part code we return to indicate the user has clicked
static void SetTXNData( TXNObject txn , const wxString& st , TXNOffset start , TXNOffset end )
{
#if wxUSE_UNICODE
- size_t len = st.Len() ;
#if SIZEOF_WCHAR_T == 2
+ size_t len = st.Len() ;
TXNSetData( txn , kTXNUnicodeTextData, (void*)st.wc_str(), len * 2,
start, end);
#else
- ByteCount byteBufferLen = len * sizeof( UniChar ) ;
- UniChar *unibuf = (UniChar*) malloc(byteBufferLen) ;
wxMBConvUTF16BE converter ;
+ ByteCount byteBufferLen = converter.WC2MB( NULL , st.wc_str() , 0 ) ;
+ UniChar *unibuf = (UniChar*) malloc(byteBufferLen) ;
converter.WC2MB( (char*) unibuf , st.wc_str() , byteBufferLen ) ;
- TXNSetData( txn , kTXNUnicodeTextData, (void*)unibuf, len * 2,
+ TXNSetData( txn , kTXNUnicodeTextData, (void*)unibuf, byteBufferLen ,
start, end);
free( unibuf ) ;
#endif
}
else
{
- actualSize = GetHandleSize( theText ) ;
+ actualSize = GetHandleSize( theText ) / sizeof( UniChar) ;
if ( actualSize > 0 )
{
wxChar *ptr = result.GetWriteBuf(actualSize*sizeof(wxChar)) ;
#else
wxMBConvUTF16BE converter ;
HLock( theText ) ;
- converter.MB2WC( ptr , (const char*)*theText , actualSize*sizeof(wxChar) ) ;
+ converter.MB2WC( ptr , (const char*)*theText , actualSize ) ;
HUnlock( theText ) ;
#endif
ptr[actualSize] = 0 ;
- result.UngetWriteBuf( actualSize ) ;
+ result.UngetWriteBuf( actualSize *sizeof(wxChar) ) ;
}
DisposeHandle( theText ) ;
}