123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- --- libX11-1.0.3/modules/im/ximcp/imDefLkup.c.dont-forward-keycode-0 2006-06-22 17:22:22.000000000 -0400
- +++ libX11-1.0.3/modules/im/ximcp/imDefLkup.c 2006-09-20 17:57:49.000000000 -0400
- @@ -332,6 +332,17 @@
- XEvent *ev,
- Bool sync)
- {
- + /*
- + * Don't forward a key event which has keycode=0.
- + * keycode=0 is reserved for special purpose to let Xmb/wcLookupString()
- + * functions know that there is a commited string available from IM.
- + */
- + if (((ev->type == KeyPress) || (ev->type == KeyRelease))) {
- + if (((XKeyEvent *)ev)->keycode == 0) {
- + return True;
- + }
- + }
- +
- #ifdef EXT_FORWARD
- if (((ev->type == KeyPress) || (ev->type == KeyRelease)))
- if (_XimExtForwardKeyEvent(ic, (XKeyEvent *)ev, sync))
- @@ -605,6 +616,19 @@
- Xfree(info->keysym);
- ic->private.proto.commit_info = info->next;
- Xfree(info);
- +
- + /*
- + * "Commit" uses fabricated flag to process a commited string
- + * from IM engine.
- + * Turn off the fabricated flag here (unregister the commited
- + * information function). Otherwise, next regular key press
- + * event will be ignored at _XimProtoKeypressFilter() and it
- + * will not be passed to IM engine.
- + */
- + if (IS_FABLICATED(ic)) {
- + UNMARK_FABLICATED(ic);
- + }
- +
- return;
- }
-
- --- libX11-1.0.3/modules/im/ximcp/imDefFlt.c.dont-forward-keycode-0 2006-06-22 17:22:22.000000000 -0400
- +++ libX11-1.0.3/modules/im/ximcp/imDefFlt.c 2006-09-20 17:57:49.000000000 -0400
- @@ -147,7 +147,7 @@
- Xim im = (Xim)ic->core.im;
- #endif
-
- - if (IS_FABLICATED(ic)) {
- + if ((ev->keycode == 0) || IS_FABLICATED(ic)) {
- _XimPendingFilter(ic);
- UNMARK_FABLICATED(ic);
- return NOTFILTERD;
|