aboutsummaryrefslogtreecommitdiffstats
path: root/chinese/tk83/files/patch-ak
diff options
context:
space:
mode:
Diffstat (limited to 'chinese/tk83/files/patch-ak')
-rw-r--r--chinese/tk83/files/patch-ak47
1 files changed, 47 insertions, 0 deletions
diff --git a/chinese/tk83/files/patch-ak b/chinese/tk83/files/patch-ak
new file mode 100644
index 000000000000..9049dcc37517
--- /dev/null
+++ b/chinese/tk83/files/patch-ak
@@ -0,0 +1,47 @@
+--- ../generic/tkEvent.c.orig Thu Dec 16 21:57:36 1999
++++ ../generic/tkEvent.c Wed Feb 21 23:18:43 2001
+@@ -663,6 +663,17 @@
+ }
+
+ #ifdef TK_USE_INPUT_METHODS
++#ifdef I18N_IMPROVE
++ /*
++ * No need to create an input context for each and every window.
++ *
++ * Futhermore, XFilterEvent() should be called just after the
++ * event is fetched, since some IM server have protocol bugs that
++ * causes Tk freezing, so events EXCEPT THE INPUT METHODS THINGS
++ * should only be queued into Tcl event queue.
++ *
++ */
++#else
+ /*
+ * Pass the event to the input method(s), if there are any, and
+ * discard the event if the input method(s) insist. Create the
+@@ -684,6 +695,7 @@
+ goto done;
+ }
+ }
++#endif /* I18N_IMPROVE */
+ #endif /* TK_USE_INPUT_METHODS */
+
+ /*
+@@ -936,6 +948,18 @@
+ break;
+ }
+ }
++
++#if defined(TK_USE_INPUT_METHODS) && defined(I18N_IMPROVE)
++ if (eventPtr->type == KeyPress && eventPtr->xkey.keycode == 0) {
++ /*
++ * No doubt this is a composed message from IM server.
++ * Tk can handle KeyPress event with zero keycode value
++ * if state of the event is zero.
++ */
++ eventPtr->xkey.state = 0;
++ dispPtr->isComposed = 1;
++ }
++#endif /* TK_USE_INPUT_METHODS && I18N_IMPROVE */
+
+ if ((dispPtr->delayedMotionPtr != NULL) && (position == TCL_QUEUE_TAIL)) {
+ if ((eventPtr->type == MotionNotify) && (eventPtr->xmotion.window