# HG changeset patch # User Gerd Moellmann # Date 945858501 0 # Node ID 3039d2412c9ea19d134f4278e2b994ad870f1435 # Parent 746b8b172e55aa97e7c0d47146f9ecd877899e21 (XTread_socket): At the beginning of the loop, pass the frame's X window to XFilterEvent instead of None because that's the X window for which the IC was created. This makes dead accents work when the pointer is not in Emacs' frame. (XTread_socket) : Don't call XFilterEvent here. diff -r 746b8b172e55 -r 3039d2412c9e src/xterm.c --- a/src/xterm.c Wed Dec 22 09:53:20 1999 +0000 +++ b/src/xterm.c Wed Dec 22 10:28:21 1999 +0000 @@ -8881,11 +8881,16 @@ #ifdef HAVE_X_I18N { - struct frame *f1 = x_any_window_to_frame (dpyinfo, - event.xclient.window); - /* The necessity of the following line took me - a full work-day to decipher from the docs!! */ - if (f1 != 0 && FRAME_XIC (f1) && XFilterEvent (&event, None)) + /* Filter events for the current X input method. + XFilterEvent returns non-zero if the input method has + consumed the event. We pass the frame's X window to + XFilterEvent because that's the one for which the IC + was created. */ + struct frame *f1 + = x_any_window_to_frame (dpyinfo, event.xclient.window); + if (f1 + && FRAME_XIC (f1) + && XFilterEvent (&event, FRAME_X_WINDOW (f1))) break; } #endif @@ -9318,10 +9323,6 @@ #ifdef HAVE_X_I18N if (FRAME_XIC (f)) { - /* The necessity of the following line took me - a full work-day to decipher from the docs!! */ - if (XFilterEvent (&event, None)) - break; nbytes = XmbLookupString (FRAME_XIC (f), &event.xkey, copy_buffer, 80, &keysym,