diff options
-rw-r--r-- | vcl/unx/inc/i18n_im.hxx | 8 | ||||
-rw-r--r-- | vcl/unx/source/app/i18n_im.cxx | 31 |
2 files changed, 32 insertions, 7 deletions
diff --git a/vcl/unx/inc/i18n_im.hxx b/vcl/unx/inc/i18n_im.hxx index 41ce2a127a34..040136bfc5dd 100644 --- a/vcl/unx/inc/i18n_im.hxx +++ b/vcl/unx/inc/i18n_im.hxx @@ -2,9 +2,9 @@ * * $RCSfile: i18n_im.hxx,v $ * - * $Revision: 1.8 $ + * $Revision: 1.9 $ * - * last change: $Author: cp $ $Date: 2001-07-18 10:21:15 $ + * last change: $Author: cp $ $Date: 2002-01-10 13:08:38 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -62,8 +62,8 @@ #ifndef _SAL_I18N_INPUTMETHOD_HXX #define _SAL_I18N_INPUTMETHOD_HXX -extern "C" char* -GetMethodName( XIMStyle nStyle, char *pBuf, int nBufSize); +extern "C" char* GetMethodName( XIMStyle nStyle, char *pBuf, int nBufSize); +extern "C" Bool CallDoneAfterResetIC(); #if (1) #define bUseInputMethodDefault True diff --git a/vcl/unx/source/app/i18n_im.cxx b/vcl/unx/source/app/i18n_im.cxx index fb7123b448b2..8bb03bd3ff38 100644 --- a/vcl/unx/source/app/i18n_im.cxx +++ b/vcl/unx/source/app/i18n_im.cxx @@ -2,9 +2,9 @@ * * $RCSfile: i18n_im.cxx,v $ * - * $Revision: 1.15 $ + * $Revision: 1.16 $ * - * last change: $Author: cp $ $Date: 2001-09-11 15:48:04 $ + * last change: $Author: cp $ $Date: 2002-01-10 13:06:51 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -94,7 +94,7 @@ extern "C" char * XSetIMValues(XIM im, ...); // ------------------------------------------------------------------------------------ // // kinput2 IME needs special key handling since key release events are filtered in -// preeditmode +// preeditmode and XmbResetIC does not work // // ------------------------------------------------------------------------------------ @@ -108,6 +108,31 @@ IMServerKinput2 () return b_kinput2; } +extern "C" Bool CallDoneAfterResetIC() +{ + const static char* p_xicpolicy = getenv ("SAL_XIMRESETPOLICY"); + static Bool b_once = False; + static Bool b_call = False; + + if (b_once == False) + { + b_once = True; + + if (p_xicpolicy && (strcasecmp(p_xicpolicy, "force") == 0)) + b_call = True; + else + if (p_xicpolicy && (strcasecmp(p_xicpolicy, "none") == 0)) + b_call = False; + else + if (IMServerKinput2()) + b_call = True; + else + b_call = False; + } + + return b_call; +} + class XKeyEventOp : XKeyEvent { private: |