richedit: Simplify redundant code in WM_IME_COMPOSITION.

This commit is contained in:
Dylan Smith 2010-05-24 01:05:03 -04:00 committed by Alexandre Julliard
parent e809bc887d
commit 3f1d3e0ea1
1 changed files with 9 additions and 17 deletions

View File

@ -4257,32 +4257,24 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
hIMC = ITextHost_TxImmGetContext(editor->texthost);
ME_DeleteSelection(editor);
ME_SaveTempStyle(editor);
if (lParam & GCS_RESULTSTR)
if (lParam & (GCS_RESULTSTR|GCS_COMPSTR))
{
LPWSTR lpCompStr = NULL;
DWORD dwBufLen;
DWORD dwIndex = lParam & GCS_RESULTSTR;
if (!dwIndex)
dwIndex = GCS_COMPSTR;
dwBufLen = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, NULL, 0);
dwBufLen = ImmGetCompositionStringW(hIMC, dwIndex, NULL, 0);
lpCompStr = HeapAlloc(GetProcessHeap(),0,dwBufLen + sizeof(WCHAR));
ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, lpCompStr, dwBufLen);
ImmGetCompositionStringW(hIMC, dwIndex, lpCompStr, dwBufLen);
lpCompStr[dwBufLen/sizeof(WCHAR)] = 0;
ME_InsertTextFromCursor(editor,0,lpCompStr,dwBufLen/sizeof(WCHAR),style);
HeapFree(GetProcessHeap(), 0, lpCompStr);
}
else if (lParam & GCS_COMPSTR)
{
LPWSTR lpCompStr = NULL;
DWORD dwBufLen;
dwBufLen = ImmGetCompositionStringW(hIMC, GCS_COMPSTR, NULL, 0);
lpCompStr = HeapAlloc(GetProcessHeap(),0,dwBufLen + sizeof(WCHAR));
ImmGetCompositionStringW(hIMC, GCS_COMPSTR, lpCompStr, dwBufLen);
lpCompStr[dwBufLen/sizeof(WCHAR)] = 0;
ME_InsertTextFromCursor(editor,0,lpCompStr,dwBufLen/sizeof(WCHAR),style);
HeapFree(GetProcessHeap(), 0, lpCompStr);
ME_SetSelection(editor,editor->imeStartIndex,
editor->imeStartIndex + dwBufLen/sizeof(WCHAR));
if (dwIndex == GCS_COMPSTR)
ME_SetSelection(editor,editor->imeStartIndex,
editor->imeStartIndex + dwBufLen/sizeof(WCHAR));
}
ME_ReleaseStyle(style);
ME_CommitUndo(editor);