riched20: Use codepage in ME_ToUnicode.
This commit is contained in:
parent
c46debeeeb
commit
eb8f47518e
@ -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,
|
|||||||
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,
|
|||||||
*/
|
*/
|
||||||
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,
|
|||||||
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,
|
|||||||
}
|
}
|
||||||
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,
|
|||||||
{
|
{
|
||||||
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,
|
|||||||
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
|
|||||||
#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
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user