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

View File

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