From cb779c95e3a950bd62cf8c6c82d613d13dc4f0b3 Mon Sep 17 00:00:00 2001 From: Jacob Nevins Date: Wed, 23 Mar 2005 01:08:18 +0000 Subject: [PATCH] Another fix from Hung-Te Lin; apparently in some IMEs (such as "MS NewPhonetics"), move events (arrow keys) were being doubled up, apparently because we turned both KEYDOWN and KEYUP events into new KEYDOWN events. I don't claim to understand the precise effect of this patch :( but I'm reasonably confident that it only affects IME users, and experimentally it doesn't seem to break anything obvious, so if piaip says it makes things better that's good enough for me :) [originally from svn r5545] --- windows/window.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/windows/window.c b/windows/window.c index ac54adab..8448ca34 100644 --- a/windows/window.c +++ b/windows/window.c @@ -2734,13 +2734,15 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, unsigned char buf[20]; int len; - if (wParam == VK_PROCESSKEY) { - MSG m; - m.hwnd = hwnd; - m.message = WM_KEYDOWN; - m.wParam = wParam; - m.lParam = lParam & 0xdfff; - TranslateMessage(&m); + if (wParam == VK_PROCESSKEY) { /* IME PROCESS key */ + if (message == WM_KEYDOWN) { + MSG m; + m.hwnd = hwnd; + m.message = WM_KEYDOWN; + m.wParam = wParam; + m.lParam = lParam & 0xdfff; + TranslateMessage(&m); + } else break; /* pass to Windows for default processing */ } else { len = TranslateKey(message, wParam, lParam, buf); if (len == -1)