changeset 4291:6cc2b35ac610 SDL-1.2

Fixed bug #634 If TranslateMessage() isn't done, then IME messages aren't generated.
author Sam Lantinga <slouken@libsdl.org>
date Sat, 10 Oct 2009 07:30:00 +0000
parents 485868a1c283
children 464126f4c7db
files src/video/windib/SDL_dibevents.c src/video/windx5/SDL_dx5events.c
diffstat 2 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/video/windib/SDL_dibevents.c	Sat Oct 10 06:38:02 2009 +0000
+++ b/src/video/windib/SDL_dibevents.c	Sat Oct 10 07:30:00 2009 +0000
@@ -198,7 +198,7 @@
 				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 @@
 
 	while ( PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ) {
 		if ( GetMessage(&msg, NULL, 0, 0) > 0 ) {
+			TranslateMessage(&msg);
 			DispatchMessage(&msg);
 		}
 	}
--- a/src/video/windx5/SDL_dx5events.c	Sat Oct 10 06:38:02 2009 +0000
+++ b/src/video/windx5/SDL_dx5events.c	Sat Oct 10 07:30:00 2009 +0000
@@ -655,6 +655,7 @@
 	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 @@
 	}
 	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);
 		}
 	}