Aric Stewart : imm32: Properly send WM_IME_NOTIFY using SendMessage.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Feb 26 07:59:42 CST 2007
Module: wine
Branch: master
Commit: 99cb61ee8a8d122bb6f2b75751f02213886fc58f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=99cb61ee8a8d122bb6f2b75751f02213886fc58f
Author: Aric Stewart <aric at codeweavers.com>
Date: Mon Feb 26 18:12:33 2007 +0900
imm32: Properly send WM_IME_NOTIFY using SendMessage.
---
dlls/imm32/imm.c | 25 ++++++++++++++++++++-----
1 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index 69cd490..ff4916a 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -169,6 +169,21 @@ static void ImmInternalPostIMEMessage(UINT msg, WPARAM wParam, LPARAM lParam)
PostMessageW(target, msg, wParam, lParam);
}
+static LRESULT ImmInternalSendIMENotify(WPARAM notify, LPARAM lParam)
+{
+ LRESULT rc = 0;
+
+ if (root_context->hwnd)
+ rc = SendMessageW(root_context->hwnd, WM_IME_NOTIFY, notify, lParam);
+ else
+ {
+ HWND target = GetFocus();
+ if (target)
+ rc = SendMessageW(target, WM_IME_NOTIFY, notify, lParam);
+ }
+
+ return rc;
+}
static void ImmInternalSetOpenStatus(BOOL fOpen)
{
@@ -202,7 +217,7 @@ static void ImmInternalSetOpenStatus(BOOL fOpen)
else
ShowWindow(hwndDefault, SW_SHOWNOACTIVATE);
- SendMessageW(root_context->hwnd, WM_IME_NOTIFY, IMN_SETOPENSTATUS, 0);
+ ImmInternalSendIMENotify(IMN_SETOPENSTATUS, 0);
}
@@ -1231,7 +1246,7 @@ BOOL WINAPI ImmSetCompositionFontA(HIMC hIMC, LPLOGFONTA lplf)
MultiByteToWideChar(CP_ACP, 0, lplf->lfFaceName, -1, data->font.lfFaceName,
LF_FACESIZE);
- ImmInternalPostIMEMessage(WM_IME_NOTIFY, IMN_SETCOMPOSITIONFONT, 0);
+ ImmInternalSendIMENotify(IMN_SETCOMPOSITIONFONT, 0);
if (data->textfont)
{
@@ -1255,7 +1270,7 @@ BOOL WINAPI ImmSetCompositionFontW(HIMC hIMC, LPLOGFONTW lplf)
return FALSE;
memcpy(&data->font,lplf,sizeof(LOGFONTW));
- ImmInternalPostIMEMessage(WM_IME_NOTIFY, IMN_SETCOMPOSITIONFONT, 0);
+ ImmInternalSendIMENotify(IMN_SETCOMPOSITIONFONT, 0);
if (data->textfont)
{
@@ -1406,7 +1421,7 @@ BOOL WINAPI ImmSetCompositionWindow(
if (reshow)
ShowWindow(hwndDefault,SW_SHOWNOACTIVATE);
- ImmInternalPostIMEMessage(WM_IME_NOTIFY,IMN_SETCOMPOSITIONWINDOW, 0);
+ ImmInternalSendIMENotify(IMN_SETCOMPOSITIONWINDOW, 0);
return TRUE;
}
@@ -1435,7 +1450,7 @@ BOOL WINAPI ImmSetOpenStatus(HIMC hIMC, BOOL fOpen)
if (hIMC == (HIMC)FROM_IME)
{
ImmInternalSetOpenStatus(fOpen);
- ImmInternalPostIMEMessage(WM_IME_NOTIFY, IMN_SETOPENSTATUS, 0);
+ ImmInternalSendIMENotify(IMN_SETOPENSTATUS, 0);
return TRUE;
}
More information about the wine-cvs
mailing list