summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@redhat.com>2008-02-24 20:03:35 -0500
committerAdam Jackson <ajax@redhat.com>2008-02-24 20:03:35 -0500
commit1a1a42a3ca1dfaf42f1094936b71c140fc030fcb (patch)
treedfc1334c8ad93b55e8821d5601cc827e0e965516 /modules
parente02e4ccafcaf3eb8993152dfcbfbee0240ea2db2 (diff)
XIM: Fix a hand when switching input context.
Red Hat bug #201284.
Diffstat (limited to 'modules')
-rw-r--r--modules/im/ximcp/imDefIc.c4
-rw-r--r--modules/im/ximcp/imDefLkup.c9
2 files changed, 11 insertions, 2 deletions
diff --git a/modules/im/ximcp/imDefIc.c b/modules/im/ximcp/imDefIc.c
index cb30ac2..c04744b 100644
--- a/modules/im/ximcp/imDefIc.c
+++ b/modules/im/ximcp/imDefIc.c
@@ -949,6 +949,8 @@ _XimProtoSetFocus(
(void)_XimWrite(im, len, (XPointer)buf);
_XimFlush(im);
+ MARK_FOCUSED(ic);
+
_XimRegisterFilter(ic);
return;
}
@@ -994,6 +996,8 @@ _XimProtoUnsetFocus(
(void)_XimWrite(im, len, (XPointer)buf);
_XimFlush(im);
+ UNMARK_FOCUSED(ic);
+
_XimUnregisterFilter(ic);
return;
}
diff --git a/modules/im/ximcp/imDefLkup.c b/modules/im/ximcp/imDefLkup.c
index 157b076..66e4add 100644
--- a/modules/im/ximcp/imDefLkup.c
+++ b/modules/im/ximcp/imDefLkup.c
@@ -216,8 +216,13 @@ _XimRespSyncReply(
Xic ic,
BITMASK16 mode)
{
- if (mode & XimSYNCHRONUS) /* SYNC Request */
- MARK_NEED_SYNC_REPLY(ic);
+ if (mode & XimSYNCHRONUS) /* SYNC Request */ {
+ if (IS_FOCUSED(ic))
+ MARK_NEED_SYNC_REPLY(ic);
+ else
+ _XimProcSyncReply(ic->core.im, ic);
+ }
+
return True;
}