diff options
Diffstat (limited to 'modules/im/ximcp/imLcIc.c')
-rw-r--r-- | modules/im/ximcp/imLcIc.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/modules/im/ximcp/imLcIc.c b/modules/im/ximcp/imLcIc.c index 541d2227..740d22fa 100644 --- a/modules/im/ximcp/imLcIc.c +++ b/modules/im/ximcp/imLcIc.c @@ -26,6 +26,7 @@ PERFORMANCE OF THIS SOFTWARE. fujiwara@a80.tech.yk.fujitsu.co.jp ******************************************************************/ +/* $XFree86: xc/lib/X11/imLcIc.c,v 1.4 2001/01/17 19:41:52 dawes Exp $ */ #include <stdio.h> #include <X11/Xlib.h> @@ -52,9 +53,13 @@ _XimLocalDestroyIC(xic) XIC xic; { Xic ic = (Xic)xic; + if(((Xim)ic->core.im)->private.local.current_ic == (XIC)ic) { - _XimLocalUnSetFocus(xic); + ((Xim)ic->core.im)->private.local.current_ic = (XIC)NULL; } + if (ic->core.focus_window) + _XUnregisterFilter(ic->core.im->core.display, + ic->core.focus_window, _XimLocalFilter, (XPointer)ic); if(ic->private.local.ic_resources) { Xfree(ic->private.local.ic_resources); ic->private.local.ic_resources = NULL; @@ -84,24 +89,29 @@ _XimLocalSetFocus(xic) return; } -Private char * -_XimLocalMbReset(xic) +Private void +_XimLocalReset(xic) XIC xic; { Xic ic = (Xic)xic; ic->private.local.composed = (DefTree *)NULL; ic->private.local.context = ((Xim)ic->core.im)->private.local.top; - return((char *)NULL); +} + +Private char * +_XimLocalMbReset(xic) + XIC xic; +{ + _XimLocalReset(xic); + return (char *)NULL; } Private wchar_t * _XimLocalWcReset(xic) XIC xic; { - Xic ic = (Xic)xic; - ic->private.local.composed = (DefTree *)NULL; - ic->private.local.context = ((Xim)ic->core.im)->private.local.top; - return((wchar_t *)NULL); + _XimLocalReset(xic); + return (wchar_t *)NULL; } Private XICMethodsRec Local_ic_methods = { @@ -112,8 +122,10 @@ Private XICMethodsRec Local_ic_methods = { _XimLocalGetICValues, /* get_values */ _XimLocalMbReset, /* mb_reset */ _XimLocalWcReset, /* wc_reset */ + _XimLocalMbReset, /* utf8_reset */ _XimLocalMbLookupString, /* mb_lookup_string */ _XimLocalWcLookupString, /* wc_lookup_string */ + _XimLocalUtf8LookupString /* utf8_lookup_string */ }; Public XIC |