changeset 26968:3039d2412c9e

(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.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 22 Dec 1999 10:28:21 +0000
parents 746b8b172e55
children 3d15c1981f27
files src/xterm.c
diffstat 1 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- 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,