diff --git a/perl-Tk-XIM.patch b/perl-Tk-XIM.patch new file mode 100644 index 0000000..af411be --- /dev/null +++ b/perl-Tk-XIM.patch @@ -0,0 +1,61 @@ +2009-03-19 Stepan Kasal + +Fix keyboard input with XIM, r12589 from +http://svn.perl.org/modules/Tk/trunk + +Index: Tk/pTk/mTk/unix/tkUnixEvent.c +=================================================================== +--- Tk/pTk/mTk/unix/tkUnixEvent.c (revision 12588) ++++ Tk/pTk/mTk/unix/tkUnixEvent.c (revision 12589) +@@ -305,22 +305,26 @@ + */ + + static void +-TransferXEventsToTcl(display) +- Display *display; ++TransferXEventsToTcl( ++ Display *display) + { +- int numFound; + XEvent event; + +- numFound = QLength(display); +- + /* +- * Transfer events from the X event queue to the Tk event queue. ++ * Transfer events from the X event queue to the Tk event queue after XIM ++ * event filtering. KeyPress and KeyRelease events are filtered in ++ * Tk_HandleEvent instead of here, so that Tk's focus management code can ++ * redirect them. + */ + +- 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--; + } + } + +Index: Tk/pTk/mTk/generic/tkEvent.c +=================================================================== +--- Tk/pTk/mTk/generic/tkEvent.c (revision 12588) ++++ Tk/pTk/mTk/generic/tkEvent.c (revision 12589) +@@ -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 */ diff --git a/perl-Tk.spec b/perl-Tk.spec index 91b1d21..8a765b9 100644 --- a/perl-Tk.spec +++ b/perl-Tk.spec @@ -3,7 +3,7 @@ Name: perl-Tk Version: 804.028 -Release: 6%{?dist} +Release: 7%{?dist} Summary: Perl Graphical User Interface ToolKit Group: Development/Libraries @@ -15,6 +15,8 @@ Patch0: perl-Tk-widget.patch Patch1: perl-Tk-debian.patch.gz # fix segfaults as in #235666 because of broken cashing code Patch2: perl-Tk-seg.patch +# fix interaction with XIM, bug #489228, upstream change r12589 +Patch3: perl-Tk-XIM.patch # fix gif overflow in tk see CVE-2006-4484 and CVE-2007-6697 or #431518 and # #431529 @@ -57,6 +59,7 @@ chmod -x pod/Popup.pod Tixish/lib/Tk/balArrow.xbm %patch1 -p1 # patch to fix #235666 ... seems like caching code is broken %patch2 -p1 -b .seg +%patch3 -p1 -b .xim %patch100 %build @@ -102,6 +105,9 @@ rm -rf $RPM_BUILD_ROOT %exclude %{perl_vendorarch}/Tk/reindex.pl %changelog +* Thu Mar 19 2009 Stepan Kasal - 804.028-7 +- perl-Tk-XIM.patch (#489228) + * Thu Feb 26 2009 Fedora Release Engineering - 804.028-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild