cchance cd0a25b
--- libX11-1.0.3/modules/im/ximcp/imDefLkup.c.bug-201284	2006-10-30 23:58:41.000000000 -0500
cchance cd0a25b
+++ libX11-1.0.3/modules/im/ximcp/imDefLkup.c	2006-10-30 23:58:41.000000000 -0500
cchance cd0a25b
@@ -216,8 +216,13 @@
cchance cd0a25b
     Xic		 ic,
cchance cd0a25b
     BITMASK16	 mode)
cchance cd0a25b
 {
cchance cd0a25b
-    if (mode & XimSYNCHRONUS) /* SYNC Request */
cchance cd0a25b
-	MARK_NEED_SYNC_REPLY(ic);
cchance cd0a25b
+    if (mode & XimSYNCHRONUS) /* SYNC Request */ {
cchance cd0a25b
+	if (IS_FOCUSED(ic))
cchance cd0a25b
+	    MARK_NEED_SYNC_REPLY(ic);
cchance cd0a25b
+	else
cchance cd0a25b
+	    _XimProcSyncReply(ic->core.im, ic);
cchance cd0a25b
+    }
cchance cd0a25b
+    
cchance cd0a25b
     return True;
cchance cd0a25b
 }
cchance cd0a25b
 
cchance cd0a25b
--- libX11-1.0.3/modules/im/ximcp/imDefIc.c.bug-201284	2006-06-22 17:22:22.000000000 -0400
cchance cd0a25b
+++ libX11-1.0.3/modules/im/ximcp/imDefIc.c	2006-10-30 23:58:41.000000000 -0500
cchance cd0a25b
@@ -949,6 +949,8 @@
cchance cd0a25b
     (void)_XimWrite(im, len, (XPointer)buf);
cchance cd0a25b
     _XimFlush(im);
cchance cd0a25b
 
cchance cd0a25b
+    MARK_FOCUSED(ic);
cchance cd0a25b
+
cchance cd0a25b
     _XimRegisterFilter(ic);
cchance cd0a25b
     return;
cchance cd0a25b
 }
cchance cd0a25b
@@ -994,6 +996,8 @@
cchance cd0a25b
     (void)_XimWrite(im, len, (XPointer)buf);
cchance cd0a25b
     _XimFlush(im);
cchance cd0a25b
 
cchance cd0a25b
+    UNMARK_FOCUSED(ic);
cchance cd0a25b
+    
cchance cd0a25b
     _XimUnregisterFilter(ic);
cchance cd0a25b
     return;
cchance cd0a25b
 }
cchance cd0a25b
--- libX11-1.0.3/src/xlibi18n/XimintP.h.bug-201284	2006-06-22 17:22:23.000000000 -0400
cchance cd0a25b
+++ libX11-1.0.3/src/xlibi18n/XimintP.h	2006-10-31 00:01:30.000000000 -0500
cchance cd0a25b
@@ -244,6 +244,7 @@
cchance cd0a25b
 #define IC_CONNECTED		(1L)
cchance cd0a25b
 #define FABLICATED		(1L << 1)
cchance cd0a25b
 #define	NEED_SYNC_REPLY		(1L << 2)
cchance cd0a25b
+#define FOCUSED			(1L << 3)
cchance cd0a25b
 
cchance cd0a25b
 /*
cchance cd0a25b
  * macro for the flag of XICPrivateRec
cchance cd0a25b
@@ -269,6 +270,13 @@
cchance cd0a25b
 #define	UNMARK_NEED_SYNC_REPLY(ic) \
cchance cd0a25b
 		(((Xic)ic)->private.proto.flag &= ~NEED_SYNC_REPLY)
cchance cd0a25b
 
cchance cd0a25b
+#define IS_FOCUSED(ic) \
cchance cd0a25b
+		(((Xic)ic)->private.proto.flag & FOCUSED)
cchance cd0a25b
+#define MARK_FOCUSED(ic) \
cchance cd0a25b
+		(((Xic)ic)->private.proto.flag |= FOCUSED)
cchance cd0a25b
+#define UNMARK_FOCUSED(ic) \
cchance cd0a25b
+		(((Xic)ic)->private.proto.flag &= ~FOCUSED)
cchance cd0a25b
+
cchance cd0a25b
 /*
cchance cd0a25b
  * macro for the filter_event_mask of XICPrivateRec
cchance cd0a25b
  */