diff options
Diffstat (limited to 'chinese/tk83/files/patch-ad')
| -rw-r--r-- | chinese/tk83/files/patch-ad | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/chinese/tk83/files/patch-ad b/chinese/tk83/files/patch-ad new file mode 100644 index 000000000000..646c7b9685c0 --- /dev/null +++ b/chinese/tk83/files/patch-ad @@ -0,0 +1,34 @@ +--- tkUnixEvent.c.orig Fri Apr 16 01:51:46 1999 ++++ tkUnixEvent.c Wed Feb 21 22:51:52 2001 +@@ -161,7 +161,12 @@ + (void) XSync(dispPtr->display, False); + (void) XCloseDisplay(dispPtr->display); + } +- ++#ifdef I18N_IMPROVE ++ if (displayPtr->imEncoding != NULL) { ++ Tcl_FreeEncoding(displayPtr->imEncoding); ++ } ++#endif /* I18N_IMPROVE */ ++ + ckfree((char *) dispPtr); + } + +@@ -246,6 +251,17 @@ + + while (numFound > 0) { + XNextEvent(display, &event); ++#ifdef I18N_IMPROVE ++ /* ++ * To avoid Tk freezing by IM server's protocol bugs, ++ * Re-check queued event after an event is filterd. ++ * ++ */ ++ if (XFilterEvent(&event, None) == True) { ++ numFound = XEventsQueued(display, QueuedAlready); ++ continue; ++ } ++#endif /* I18N_IMPROVE */ + Tk_QueueWindowEvent(&event, TCL_QUEUE_TAIL); + numFound--; + } |
