diff options
author | rmax <rmax> | 2005-12-05 21:38:46 (GMT) |
---|---|---|
committer | rmax <rmax> | 2005-12-05 21:38:46 (GMT) |
commit | 625cf8fa40fb9adc16b8ea97230c3df8d867bccf (patch) | |
tree | e99c1536e8d74658f1d03ad29a6998f79294c315 /unix/tkUnixEvent.c | |
parent | e0a83f1e6142c748302648638ae6ac3c3b9364ad (diff) | |
download | tk-625cf8fa40fb9adc16b8ea97230c3df8d867bccf.zip tk-625cf8fa40fb9adc16b8ea97230c3df8d867bccf.tar.gz tk-625cf8fa40fb9adc16b8ea97230c3df8d867bccf.tar.bz2 |
Added a workaround for SCIM
Diffstat (limited to 'unix/tkUnixEvent.c')
-rw-r--r-- | unix/tkUnixEvent.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/unix/tkUnixEvent.c b/unix/tkUnixEvent.c index 34d9a69..3e66ba8 100644 --- a/unix/tkUnixEvent.c +++ b/unix/tkUnixEvent.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkUnixEvent.c,v 1.11.2.3 2004/10/27 00:37:38 davygrvy Exp $ + * RCS: @(#) $Id: tkUnixEvent.c,v 1.11.2.4 2005/12/05 21:38:48 rmax Exp $ */ #include "tkInt.h" @@ -650,10 +650,31 @@ OpenIM(dispPtr) { unsigned short i; XIMStyles *stylePtr; + char *modifiers; - if (XSetLocaleModifiers("") == NULL) { + modifiers = XSetLocaleModifiers(""); + if (modifiers == NULL) { goto error; } +#if 1 + /* + * This is a temporary hack that can be taken back out again + * once Tk has learned how to deal with SCIM + */ + while ((modifiers = strchr(modifiers, '@')) != NULL) { + if (strncmp(modifiers, "@im=", 4) == 0) { + /* The first "@im=" entry wins */ + const char const *scim = "@im=SCIM"; + if (strncmp(modifiers, scim, strlen(scim)) == 0) { + /* If it is SCIM, we override it */ + if (XSetLocaleModifiers("@im=local") == NULL) { + goto error; + } + } + break; + } + } +#endif dispPtr->inputMethod = XOpenIM(dispPtr->display, NULL, NULL, NULL); if (dispPtr->inputMethod == NULL) { |