File scim_swallow.diff of Package xorg-x11-libX11
diff -r -u libX11-1.2.orig/modules/im/ximcp/imDefFlt.c libX11-1.2/modules/im/ximcp/imDefFlt.c
--- libX11-1.2.orig/modules/im/ximcp/imDefFlt.c 2009-02-17 16:09:41.000000000 +0100
+++ libX11-1.2/modules/im/ximcp/imDefFlt.c 2009-03-03 17:38:16.000000000 +0100
@@ -131,9 +131,9 @@
{
Xim im = (Xim)ic->core.im;
- if (IS_NEED_SYNC_REPLY(ic)) {
+ if (IS_NEED_SYNC_REPLY(im)) {
(void)_XimProcSyncReply(im, ic);
- UNMARK_NEED_SYNC_REPLY(ic);
+ UNMARK_NEED_SYNC_REPLY(im);
}
return;
}
@@ -143,13 +143,11 @@
Xic ic,
XKeyEvent *ev)
{
-#ifdef XIM_CONNECTABLE
Xim im = (Xim)ic->core.im;
-#endif
- if (IS_FABLICATED(ic)) {
+ if (IS_FABRICATED(im)) {
_XimPendingFilter(ic);
- UNMARK_FABLICATED(ic);
+ UNMARK_FABRICATED(im);
return NOTFILTERD;
}
@@ -206,13 +204,11 @@
Xic ic,
XKeyEvent *ev)
{
-#ifdef XIM_CONNECTABLE
Xim im = (Xim)ic->core.im;
-#endif
- if (IS_FABLICATED(ic)) {
+ if (IS_FABRICATED(im)) {
_XimPendingFilter(ic);
- UNMARK_FABLICATED(ic);
+ UNMARK_FABRICATED(im);
return NOTFILTERD;
}
diff -r -u libX11-1.2.orig/modules/im/ximcp/imDefIc.c libX11-1.2/modules/im/ximcp/imDefIc.c
--- libX11-1.2.orig/modules/im/ximcp/imDefIc.c 2009-02-17 16:09:41.000000000 +0100
+++ libX11-1.2/modules/im/ximcp/imDefIc.c 2009-03-03 15:32:40.000000000 +0100
@@ -949,8 +949,6 @@
(void)_XimWrite(im, len, (XPointer)buf);
_XimFlush(im);
- MARK_FOCUSED(ic);
-
_XimRegisterFilter(ic);
return;
}
@@ -996,8 +994,6 @@
(void)_XimWrite(im, len, (XPointer)buf);
_XimFlush(im);
- UNMARK_FOCUSED(ic);
-
_XimUnregisterFilter(ic);
return;
}
diff -r -u libX11-1.2.orig/modules/im/ximcp/imDefLkup.c libX11-1.2/modules/im/ximcp/imDefLkup.c
diff -r -u libX11-1.2.orig/modules/im/ximcp/imExten.c libX11-1.2/modules/im/ximcp/imExten.c
--- libX11-1.2.orig/modules/im/ximcp/imExten.c 2009-02-17 16:09:41.000000000 +0100
+++ libX11-1.2/modules/im/ximcp/imExten.c 2009-03-03 15:32:40.000000000 +0100
@@ -162,7 +162,7 @@
XPutBackEvent(im->core.display, &ev);
_XimRespSyncReply(ic, buf_s[0]);
- MARK_FABLICATED(ic);
+ MARK_FABRICATED(im);
return True;
}
diff -r -u libX11-1.2.orig/src/xlibi18n/XimintP.h libX11-1.2/src/xlibi18n/XimintP.h
--- libX11-1.2.orig/src/xlibi18n/XimintP.h 2009-02-17 16:09:41.000000000 +0100
+++ libX11-1.2/src/xlibi18n/XimintP.h 2009-03-03 15:32:40.000000000 +0100
@@ -144,6 +144,8 @@
#define DELAYBINDABLE (1L << 3)
#define RECONNECTABLE (1L << 4)
#endif /* XIM_CONNECTABLE */
+#define FABRICATED (1L << 5)
+#define NEED_SYNC_REPLY (1L << 6)
/*
* macro for the flag of XIMPrivateRec
@@ -182,6 +184,20 @@
(((Xim)im)->private.proto.flag &= ~(DELAYBINDABLE|RECONNECTABLE))
#endif /* XIM_CONNECTABLE */
+#define IS_FABRICATED(im) \
+ (((Xim)im)->private.proto.flag & FABRICATED)
+#define MARK_FABRICATED(im) \
+ (((Xim)im)->private.proto.flag |= FABRICATED)
+#define UNMARK_FABRICATED(im) \
+ (((Xim)im)->private.proto.flag &= ~FABRICATED)
+
+#define IS_NEED_SYNC_REPLY(im) \
+ (((Xim)im)->private.proto.flag & NEED_SYNC_REPLY)
+#define MARK_NEED_SYNC_REPLY(im) \
+ (((Xim)im)->private.proto.flag |= NEED_SYNC_REPLY)
+#define UNMARK_NEED_SYNC_REPLY(im) \
+ (((Xim)im)->private.proto.flag &= ~NEED_SYNC_REPLY)
+
/*
* bit mask for the register_filter_event of XIMPrivateRec/XICPrivateRec
*/
@@ -242,9 +258,6 @@
* bit mask for the flag of XICPrivateRec
*/
#define IC_CONNECTED (1L)
-#define FABLICATED (1L << 1)
-#define NEED_SYNC_REPLY (1L << 2)
-#define FOCUSED (1L << 3)
/*
* macro for the flag of XICPrivateRec
@@ -256,27 +269,6 @@
#define UNMARK_IC_CONNECTED(ic) \
(((Xic)ic)->private.proto.flag &= ~IC_CONNECTED)
-#define IS_FABLICATED(ic) \
- (((Xic)ic)->private.proto.flag & FABLICATED)
-#define MARK_FABLICATED(ic) \
- (((Xic)ic)->private.proto.flag |= FABLICATED)
-#define UNMARK_FABLICATED(ic) \
- (((Xic)ic)->private.proto.flag &= ~FABLICATED)
-
-#define IS_NEED_SYNC_REPLY(ic) \
- (((Xic)ic)->private.proto.flag & NEED_SYNC_REPLY)
-#define MARK_NEED_SYNC_REPLY(ic) \
- (((Xic)ic)->private.proto.flag |= NEED_SYNC_REPLY)
-#define UNMARK_NEED_SYNC_REPLY(ic) \
- (((Xic)ic)->private.proto.flag &= ~NEED_SYNC_REPLY)
-
-#define IS_FOCUSED(ic) \
- (((Xic)ic)->private.proto.flag & FOCUSED)
-#define MARK_FOCUSED(ic) \
- (((Xic)ic)->private.proto.flag |= FOCUSED)
-#define UNMARK_FOCUSED(ic) \
- (((Xic)ic)->private.proto.flag &= ~FOCUSED)
-
/*
* macro for the filter_event_mask of XICPrivateRec
*/
--- libX11-1.2/modules/im/ximcp/imDefLkup.c.orig 2009-03-03 18:11:06.000000000 +0100
+++ libX11-1.2/modules/im/ximcp/imDefLkup.c 2009-03-03 18:14:59.000000000 +0100
@@ -216,12 +216,8 @@ _XimRespSyncReply(
Xic ic,
BITMASK16 mode)
{
- if (mode & XimSYNCHRONUS) /* SYNC Request */ {
- if (IS_FOCUSED(ic))
- MARK_NEED_SYNC_REPLY(ic);
- else
- _XimProcSyncReply((Xim)ic->core.im, ic);
- }
+ if (mode & XimSYNCHRONUS) /* SYNC Request */
+ MARK_NEED_SYNC_REPLY(ic->core.im);
return True;
}
@@ -359,7 +355,7 @@ _XimProcEvent(
ev->xany.serial |= serial << 16;
ev->xany.send_event = False;
ev->xany.display = d;
- MARK_FABLICATED(ic);
+ MARK_FABRICATED(ic->core.im);
return;
}
@@ -712,7 +708,7 @@ _XimCommitRecv(
if (ic->private.proto.registed_filter_event
& (KEYPRESS_MASK | KEYRELEASE_MASK))
- MARK_FABLICATED(ic);
+ MARK_FABRICATED(im);
ev.type = KeyPress;
ev.send_event = False;