+1999-12-22 Gerd Moellmann <gerd@gnu.org>
+
+ * xterm.c (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) <KeyPress>: Don't call XFilterEvent here.
+
1999-12-20 Dave Love <fx@gnu.org>
* xfns.c (Fx_show_tip): Add missing UNGCPRO.
#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
#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,