summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/unx/inc/i18n_im.hxx8
-rw-r--r--vcl/unx/source/app/i18n_im.cxx31
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: