- perl-Tk-XIM.patch (#489228)

This commit is contained in:
Štěpán Kasal 2009-03-19 14:54:33 +00:00
parent d3d71f38ef
commit 5a07220c18
2 changed files with 68 additions and 1 deletions

61
perl-Tk-XIM.patch Normal file
View File

@ -0,0 +1,61 @@
2009-03-19 Stepan Kasal <skasal@redhat.com>
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 */

View File

@ -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 <skasal@redhat.com> - 804.028-7
- perl-Tk-XIM.patch (#489228)
* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 804.028-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild