From b613ffc4f16b2a0f840402e3e8eb6b95fbeb2dd6 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 10 Oct 2009 07:30:00 +0000 Subject: [PATCH] Fixed bug #634 If TranslateMessage() isn't done, then IME messages aren't generated. --HG-- branch : SDL-1.2 extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%404005 --- src/video/windib/SDL_dibevents.c | 3 ++- src/video/windx5/SDL_dx5events.c | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/video/windib/SDL_dibevents.c b/src/video/windib/SDL_dibevents.c index 85a2379be..e94c4db5a 100644 --- a/src/video/windib/SDL_dibevents.c +++ b/src/video/windib/SDL_dibevents.c @@ -198,7 +198,7 @@ LRESULT DIB_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar m.wParam = wParam; m.lParam = lParam; m.time = 0; - if ( TranslateMessage(&m) && PeekMessage(&m, hwnd, 0, WM_USER, PM_NOREMOVE) && (m.message == WM_CHAR) ) { + if ( PeekMessage(&m, hwnd, 0, WM_USER, PM_NOREMOVE) && (m.message == WM_CHAR) ) { GetMessage(&m, hwnd, 0, WM_USER); wParam = m.wParam; } @@ -363,6 +363,7 @@ void DIB_PumpEvents(_THIS) while ( PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ) { if ( GetMessage(&msg, NULL, 0, 0) > 0 ) { + TranslateMessage(&msg); DispatchMessage(&msg); } } diff --git a/src/video/windx5/SDL_dx5events.c b/src/video/windx5/SDL_dx5events.c index 744a47972..65dac49cc 100644 --- a/src/video/windx5/SDL_dx5events.c +++ b/src/video/windx5/SDL_dx5events.c @@ -655,6 +655,7 @@ static int DX5_CheckInput(_THIS, int timeout, BOOL processInput) while ( ! posted && PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ) { if ( GetMessage(&msg, NULL, 0, 0) > 0 ) { + TranslateMessage(&msg); DispatchMessage(&msg); } else { return(-1); @@ -713,12 +714,17 @@ static int DX5_CheckInput(_THIS, int timeout, BOOL processInput) } if ( event != WAIT_TIMEOUT ) { /* Maybe there was a windows message? */ - if ( PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ) { + posted = 0; + while ( ! posted && + PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ) { if ( GetMessage(&msg, NULL, 0, 0) > 0 ) { + TranslateMessage(&msg); DispatchMessage(&msg); } else { return(-1); } + } + if ( posted ) { return(1); } }