Module: wine Branch: master Commit: eb8f47518eae395ea10cd5defd744dfe54e83fbe URL: http://source.winehq.org/git/wine.git/?a=commit;h=eb8f47518eae395ea10cd5defd...
Author: Jactry Zeng jactry92@gmail.com Date: Tue Jan 21 08:42:58 2014 +0800
riched20: Use codepage in ME_ToUnicode.
---
dlls/riched20/editor.c | 21 +++++++++++---------- dlls/riched20/editor.h | 4 ++-- dlls/riched20/string.c | 12 ++++++------ 3 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index 119061f..85848bc 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -3364,10 +3364,9 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, len = lParam ? strlen((char *)lParam) : 0; } } else { - /* FIXME: make use of pStruct->codepage in the to unicode translation */ - wszText = ME_ToUnicode(bUnicode, (void *)lParam, &len); + wszText = ME_ToUnicode(pStruct->codepage, (void *)lParam, &len); ME_InsertTextFromCursor(editor, 0, wszText, len, style); - ME_EndToUnicode(bUnicode, wszText); + ME_EndToUnicode(pStruct->codepage, wszText); }
if (bSelection) { @@ -3555,7 +3554,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, int from, to, nStartCursor; ME_Style *style; 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));
nStartCursor = ME_GetSelectionOfs(editor, &from, &to); @@ -3570,7 +3570,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, */ if (len>0 && wszText[len-1] == '\n') ME_ClearTempStyle(editor); - ME_EndToUnicode(unicode, wszText); + ME_EndToUnicode(codepage, wszText); ME_CommitUndo(editor); ME_UpdateSelectionLinkAttribute(editor); if (!wParam) @@ -3626,7 +3626,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, else { 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() */ if (textLen > 0) { @@ -3643,7 +3644,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, } ME_InsertTextFromCursor(editor, 0, wszText, len, editor->pBuffer->pDefaultStyle); } - ME_EndToUnicode(unicode, wszText); + ME_EndToUnicode(codepage, wszText); } } else @@ -4035,8 +4036,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, { WCHAR *textW; int len; - - textW = ME_ToUnicode(unicode, text, &len); + LONG codepage = unicode ? CP_UNICODE : CP_ACP; + textW = ME_ToUnicode(codepage, text, &len); if (!(editor->styleFlags & ES_MULTILINE)) { len = 0; @@ -4044,7 +4045,7 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, len++; } 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[1]); } diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h index ae8b81a..af7291f 100644 --- a/dlls/riched20/editor.h +++ b/dlls/riched20/editor.h @@ -110,8 +110,8 @@ BOOL ME_InsertString(ME_String *s, int ofs, const WCHAR *insert, int len) DECLSP #define CP_UNICODE 1200
/* 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; -void ME_EndToUnicode(BOOL unicode, LPVOID psz) DECLSPEC_HIDDEN; +LPWSTR ME_ToUnicode(LONG codepage, LPVOID psz, INT *len) DECLSPEC_HIDDEN; +void ME_EndToUnicode(LONG codepage, LPVOID psz) DECLSPEC_HIDDEN;
static inline int ME_IsWSpace(WCHAR ch) { diff --git a/dlls/riched20/string.c b/dlls/riched20/string.c index f4cd320..12e4ad7 100644 --- a/dlls/riched20/string.c +++ b/dlls/riched20/string.c @@ -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; if (!psz) return NULL;
- if (unicode) + if (codepage == CP_UNICODE) { *len = lstrlenW(psz); return psz; } else { 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((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; } }
-void ME_EndToUnicode(BOOL unicode, LPVOID psz) +void ME_EndToUnicode(LONG codepage, LPVOID psz) { - if (!unicode) + if (codepage != CP_UNICODE) FREE_OBJ(psz); }