Package: perl-tk
Version: 1:804.028-3

I cannot input in Entry. This is caused by some incompatibility with XIM.
With the help of google, I finally find this patch:

--- pTk/mTk/generic/tkEvent.c 2008-09-05 13:29:48.000000000 +0800
+++ pTk/mTk/generic/tkEvent.c 2008-09-05 13:17:24.000000000 +0800
@@ -945,8 +945,10 @@
 #endif
            }
        }
- if (XFilterEvent(eventPtr, None)) {
- goto done;
+ if(eventPtr->type == KeyPress || eventPtr->type == KeyRelease) {
+ if(XFilterEvent(eventPtr, None)) {
+ goto done;
+ }
        }
     }
 #endif /* TK_USE_INPUT_METHODS */
--- pTk/mTk/unix/tkUnixEvent.c 2008-09-05 13:29:50.000000000 +0800
+++ pTk/mTk/unix/tkUnixEvent.c 2008-09-05 13:20:35.000000000 +0800
@@ -308,19 +308,18 @@
 TransferXEventsToTcl(display)
     Display *display;
 {
- int numFound;
     XEvent event;

- numFound = QLength(display);
-
     /*
      * Transfer events from the X event queue to the Tk event queue.
      */

- while (numFound > 0) {
+ while (QLength(display) > 0) {
        XNextEvent(display, &event);
+ if(event.type!=KeyPress && event.type!=KeyRelease) {
+ if(XFilterEvent(&event, None)) {continue;}
+ }
        Tk_QueueWindowEvent(&event, TCL_QUEUE_TAIL);
- numFound--;
     }
 }
I've tested this patch, and it works perfectly. Hope it can be accepted.

Reply via email to