(XTread_socket): At the beginning of the loop, pass the
authorGerd Moellmann <gerd@gnu.org>
Wed, 22 Dec 1999 10:29:16 +0000 (10:29 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 22 Dec 1999 10:29:16 +0000 (10:29 +0000)
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.

src/ChangeLog
src/xterm.c

index 7997957..5280ae2 100644 (file)
@@ -1,3 +1,11 @@
+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.
index 9e21928..a2acc10 100644 (file)
@@ -8881,11 +8881,16 @@ XTread_socket (sd, bufp, numchars, expected)
 
 #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 @@ XTread_socket (sd, bufp, numchars, expected)
 #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,