Alexandre Julliard : user32: WM_IME_CHAR should result in posted, not sent, WM_CHAR messages.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Aug 9 08:23:00 CDT 2007


Module: wine
Branch: master
Commit: c7b1b4c68bdcabe76a3de5672b33d24a6cbabe26
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c7b1b4c68bdcabe76a3de5672b33d24a6cbabe26

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Aug  9 13:14:20 2007 +0200

user32: WM_IME_CHAR should result in posted, not sent, WM_CHAR messages.

---

 dlls/user32/defwnd.c |   17 ++++++-----------
 1 files changed, 6 insertions(+), 11 deletions(-)

diff --git a/dlls/user32/defwnd.c b/dlls/user32/defwnd.c
index 489f720..6f97880 100644
--- a/dlls/user32/defwnd.c
+++ b/dlls/user32/defwnd.c
@@ -812,20 +812,15 @@ LRESULT WINAPI DefWindowProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
         result = 1; /* success. FIXME: check text length */
         break;
 
-    /* for far east users (IMM32) - <hidenori at a2.ctktv.ne.jp> */
     case WM_IME_CHAR:
-        {
-            CHAR    chChar1 = (CHAR)( (wParam>>8) & 0xff );
-            CHAR    chChar2 = (CHAR)( wParam & 0xff );
-
-            if (chChar1)
-                SendMessageA( hwnd, WM_CHAR, (WPARAM)chChar1, lParam );
-            SendMessageA( hwnd, WM_CHAR, (WPARAM)chChar2, lParam );
-        }
+        if (HIBYTE(wParam)) PostMessageA( hwnd, WM_CHAR, HIBYTE(wParam), lParam );
+        PostMessageA( hwnd, WM_CHAR, LOBYTE(wParam), lParam );
         break;
+
     case WM_IME_KEYDOWN:
         result = SendMessageA( hwnd, WM_KEYDOWN, wParam, lParam );
         break;
+
     case WM_IME_KEYUP:
         result = SendMessageA( hwnd, WM_KEYUP, wParam, lParam );
         break;
@@ -968,10 +963,10 @@ LRESULT WINAPI DefWindowProcW(
         result = 1; /* success. FIXME: check text length */
         break;
 
-    /* for far east users (IMM32) - <hidenori at a2.ctktv.ne.jp> */
     case WM_IME_CHAR:
-        SendMessageW( hwnd, WM_CHAR, wParam, lParam );
+        PostMessageW( hwnd, WM_CHAR, wParam, lParam );
         break;
+
     case WM_IME_SETCONTEXT:
         {
             HWND hwndIME;




More information about the wine-cvs mailing list