diff options
Diffstat (limited to 'modules/im/ximcp/imThaiIc.c')
-rw-r--r-- | modules/im/ximcp/imThaiIc.c | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/modules/im/ximcp/imThaiIc.c b/modules/im/ximcp/imThaiIc.c index bead0285..711654f5 100644 --- a/modules/im/ximcp/imThaiIc.c +++ b/modules/im/ximcp/imThaiIc.c @@ -32,6 +32,7 @@ THIS SOFTWARE. frankyling@hgrd01.enet.dec.com ******************************************************************/ +/* $XFree86: xc/lib/X11/imThaiIc.c,v 1.4 2001/01/17 19:41:52 dawes Exp $ */ #include <stdio.h> #include <X11/Xlib.h> @@ -68,9 +69,11 @@ _XimThaiDestroyIC(xic) Xfree(ic->private.local.context->mb); Xfree(ic->private.local.context->wc); + Xfree(ic->private.local.context->utf8); Xfree(ic->private.local.context); Xfree(ic->private.local.composed->mb); Xfree(ic->private.local.composed->wc); + Xfree(ic->private.local.composed->utf8); Xfree(ic->private.local.composed); return; } @@ -96,8 +99,8 @@ _XimThaiSetFocus(xic) return; } -Private char * -_XimThaiMbReset(xic) +Private void +_XimThaiReset(xic) XIC xic; { Xic ic = (Xic)xic; @@ -105,19 +108,23 @@ _XimThaiMbReset(xic) ic->private.local.thai.keysym = 0; ic->private.local.composed->mb[0] = '\0'; ic->private.local.composed->wc[0] = 0; - return((char *)NULL); + ic->private.local.composed->utf8[0] = '\0'; +} + +Private char * +_XimThaiMbReset(xic) + XIC xic; +{ + _XimThaiReset(xic); + return (char *)NULL; } Private wchar_t * _XimThaiWcReset(xic) XIC xic; { - Xic ic = (Xic)xic; - ic->private.local.thai.comp_state = 0; - ic->private.local.thai.keysym = 0; - ic->private.local.composed->mb[0] = '\0'; - ic->private.local.composed->wc[0] = 0; - return((wchar_t *)NULL); + _XimThaiReset(xic); + return (wchar_t *)NULL; } Private XICMethodsRec Thai_ic_methods = { @@ -128,8 +135,10 @@ Private XICMethodsRec Thai_ic_methods = { _XimLocalGetICValues, /* get_values */ _XimThaiMbReset, /* mb_reset */ _XimThaiWcReset, /* wc_reset */ + _XimThaiMbReset, /* utf8_reset */ _XimLocalMbLookupString, /* mb_lookup_string */ _XimLocalWcLookupString, /* wc_lookup_string */ + _XimLocalUtf8LookupString /* utf8_lookup_string */ }; XIC @@ -160,6 +169,9 @@ _XimThaiCreateIC(im, values) if ((ic->private.local.context->wc = (wchar_t *)Xmalloc(10*sizeof(wchar_t))) == (wchar_t *)NULL) goto Set_Error; + if ((ic->private.local.context->utf8 = (char *)Xmalloc(10)) + == (char *)NULL) + goto Set_Error; if ((ic->private.local.composed = (DefTree *)Xmalloc(sizeof(DefTree))) == (DefTree *)NULL) goto Set_Error; @@ -169,6 +181,9 @@ _XimThaiCreateIC(im, values) if ((ic->private.local.composed->wc = (wchar_t *)Xmalloc(10*sizeof(wchar_t))) == (wchar_t *)NULL) goto Set_Error; + if ((ic->private.local.composed->utf8 = (char *)Xmalloc(10)) + == (char *)NULL) + goto Set_Error; ic->private.local.thai.comp_state = 0; ic->private.local.thai.keysym = 0; |