Commit eb8f4751 authored by Jactry Zeng's avatar Jactry Zeng Committed by Alexandre Julliard

riched20: Use codepage in ME_ToUnicode.

parent c46debee
...@@ -3364,10 +3364,9 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, ...@@ -3364,10 +3364,9 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
len = lParam ? strlen((char *)lParam) : 0; len = lParam ? strlen((char *)lParam) : 0;
} }
} else { } else {
/* FIXME: make use of pStruct->codepage in the to unicode translation */ wszText = ME_ToUnicode(pStruct->codepage, (void *)lParam, &len);
wszText = ME_ToUnicode(bUnicode, (void *)lParam, &len);
ME_InsertTextFromCursor(editor, 0, wszText, len, style); ME_InsertTextFromCursor(editor, 0, wszText, len, style);
ME_EndToUnicode(bUnicode, wszText); ME_EndToUnicode(pStruct->codepage, wszText);
} }
if (bSelection) { if (bSelection) {
...@@ -3555,7 +3554,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, ...@@ -3555,7 +3554,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
int from, to, nStartCursor; int from, to, nStartCursor;
ME_Style *style; ME_Style *style;
int len = 0; int len = 0;
LPWSTR wszText = ME_ToUnicode(unicode, (void *)lParam, &len); LONG codepage = unicode ? CP_UNICODE : CP_ACP;
LPWSTR wszText = ME_ToUnicode(codepage, (void *)lParam, &len);
TRACE("EM_REPLACESEL - %s\n", debugstr_w(wszText)); TRACE("EM_REPLACESEL - %s\n", debugstr_w(wszText));
nStartCursor = ME_GetSelectionOfs(editor, &from, &to); nStartCursor = ME_GetSelectionOfs(editor, &from, &to);
...@@ -3570,7 +3570,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, ...@@ -3570,7 +3570,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
*/ */
if (len>0 && wszText[len-1] == '\n') if (len>0 && wszText[len-1] == '\n')
ME_ClearTempStyle(editor); ME_ClearTempStyle(editor);
ME_EndToUnicode(unicode, wszText); ME_EndToUnicode(codepage, wszText);
ME_CommitUndo(editor); ME_CommitUndo(editor);
ME_UpdateSelectionLinkAttribute(editor); ME_UpdateSelectionLinkAttribute(editor);
if (!wParam) if (!wParam)
...@@ -3626,7 +3626,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, ...@@ -3626,7 +3626,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
else else
{ {
int textLen; int textLen;
LPWSTR wszText = ME_ToUnicode(unicode, (void *)lParam, &textLen); LONG codepage = unicode ? CP_UNICODE : CP_ACP;
LPWSTR wszText = ME_ToUnicode(codepage, (void *)lParam, &textLen);
TRACE("WM_SETTEXT - %s\n", debugstr_w(wszText)); /* debugstr_w() */ TRACE("WM_SETTEXT - %s\n", debugstr_w(wszText)); /* debugstr_w() */
if (textLen > 0) if (textLen > 0)
{ {
...@@ -3643,7 +3644,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, ...@@ -3643,7 +3644,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
} }
ME_InsertTextFromCursor(editor, 0, wszText, len, editor->pBuffer->pDefaultStyle); ME_InsertTextFromCursor(editor, 0, wszText, len, editor->pBuffer->pDefaultStyle);
} }
ME_EndToUnicode(unicode, wszText); ME_EndToUnicode(codepage, wszText);
} }
} }
else else
...@@ -4035,8 +4036,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, ...@@ -4035,8 +4036,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
{ {
WCHAR *textW; WCHAR *textW;
int len; int len;
LONG codepage = unicode ? CP_UNICODE : CP_ACP;
textW = ME_ToUnicode(unicode, text, &len); textW = ME_ToUnicode(codepage, text, &len);
if (!(editor->styleFlags & ES_MULTILINE)) if (!(editor->styleFlags & ES_MULTILINE))
{ {
len = 0; len = 0;
...@@ -4044,7 +4045,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, ...@@ -4044,7 +4045,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
len++; len++;
} }
ME_InsertTextFromCursor(editor, 0, textW, len, editor->pBuffer->pDefaultStyle); ME_InsertTextFromCursor(editor, 0, textW, len, editor->pBuffer->pDefaultStyle);
ME_EndToUnicode(unicode, textW); ME_EndToUnicode(codepage, textW);
ME_SetCursorToStart(editor, &editor->pCursors[0]); ME_SetCursorToStart(editor, &editor->pCursors[0]);
ME_SetCursorToStart(editor, &editor->pCursors[1]); ME_SetCursorToStart(editor, &editor->pCursors[1]);
} }
......
...@@ -110,8 +110,8 @@ BOOL ME_InsertString(ME_String *s, int ofs, const WCHAR *insert, int len) DECLSP ...@@ -110,8 +110,8 @@ BOOL ME_InsertString(ME_String *s, int ofs, const WCHAR *insert, int len) DECLSP
#define CP_UNICODE 1200 #define CP_UNICODE 1200
/* smart helpers for A<->W conversions, they reserve/free memory and call MultiByte<->WideChar functions */ /* smart helpers for A<->W conversions, they reserve/free memory and call MultiByte<->WideChar functions */
LPWSTR ME_ToUnicode(BOOL unicode, LPVOID psz, INT *len) DECLSPEC_HIDDEN; LPWSTR ME_ToUnicode(LONG codepage, LPVOID psz, INT *len) DECLSPEC_HIDDEN;
void ME_EndToUnicode(BOOL unicode, LPVOID psz) DECLSPEC_HIDDEN; void ME_EndToUnicode(LONG codepage, LPVOID psz) DECLSPEC_HIDDEN;
static inline int ME_IsWSpace(WCHAR ch) static inline int ME_IsWSpace(WCHAR ch)
{ {
......
...@@ -172,30 +172,30 @@ ME_CallWordBreakProc(ME_TextEditor *editor, WCHAR *str, INT len, INT start, INT ...@@ -172,30 +172,30 @@ ME_CallWordBreakProc(ME_TextEditor *editor, WCHAR *str, INT len, INT start, INT
} }
} }
LPWSTR ME_ToUnicode(BOOL unicode, LPVOID psz, INT *len) LPWSTR ME_ToUnicode(LONG codepage, LPVOID psz, INT *len)
{ {
*len = 0; *len = 0;
if (!psz) return NULL; if (!psz) return NULL;
if (unicode) if (codepage == CP_UNICODE)
{ {
*len = lstrlenW(psz); *len = lstrlenW(psz);
return psz; return psz;
} }
else { else {
WCHAR *tmp; WCHAR *tmp;
int nChars = MultiByteToWideChar(CP_ACP, 0, psz, -1, NULL, 0); int nChars = MultiByteToWideChar(codepage, 0, psz, -1, NULL, 0);
if(!nChars) return NULL; if(!nChars) return NULL;
if((tmp = ALLOC_N_OBJ(WCHAR, nChars)) != NULL) if((tmp = ALLOC_N_OBJ(WCHAR, nChars)) != NULL)
*len = MultiByteToWideChar(CP_ACP, 0, psz, -1, tmp, nChars) - 1; *len = MultiByteToWideChar(codepage, 0, psz, -1, tmp, nChars) - 1;
return tmp; return tmp;
} }
} }
void ME_EndToUnicode(BOOL unicode, LPVOID psz) void ME_EndToUnicode(LONG codepage, LPVOID psz)
{ {
if (!unicode) if (codepage != CP_UNICODE)
FREE_OBJ(psz); FREE_OBJ(psz);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment