SOURCES: tk-genericevent.patch (NEW) - fix for "no event type or button # o...
draenog
draenog at pld-linux.org
Fri Aug 8 17:47:52 CEST 2008
Author: draenog Date: Fri Aug 8 15:47:52 2008 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- fix for "no event type or button # or keysym while executing
"bind Listbox <MouseWheel> [...]"
- taken from Fedora cvs
---- Files affected:
SOURCES:
tk-genericevent.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/tk-genericevent.patch
diff -u /dev/null SOURCES/tk-genericevent.patch:1.1
--- /dev/null Fri Aug 8 17:47:53 2008
+++ SOURCES/tk-genericevent.patch Fri Aug 8 17:47:47 2008
@@ -0,0 +1,84 @@
+diff -up tk8.5.3/generic/tkEvent.c.crash1 tk8.5.3/generic/tkEvent.c
+--- tk8.5.3/generic/tkEvent.c.crash1 2008-03-26 20:04:09.000000000 +0100
++++ tk8.5.3/generic/tkEvent.c 2008-08-06 09:47:03.000000000 +0200
+@@ -75,7 +75,7 @@ typedef struct TkWindowEvent {
+ * Array of event masks corresponding to each X event:
+ */
+
+-static unsigned long eventMasks[TK_LASTEVENT] = {
++static unsigned long realEventMasks[MappingNotify+1] = {
+ 0,
+ 0,
+ KeyPressMask, /* KeyPress */
+@@ -113,7 +113,10 @@ static unsigned long eventMasks[TK_LASTE
+ 0, /* SelectionNotify */
+ ColormapChangeMask, /* ColormapNotify */
+ 0, /* ClientMessage */
+- 0, /* Mapping Notify */
++ 0 /* Mapping Notify */
++};
++
++static unsigned long virtualEventMasks[TK_LASTEVENT-VirtualEvent] = {
+ VirtualEventMask, /* VirtualEvents */
+ ActivateMask, /* ActivateNotify */
+ ActivateMask, /* DeactivateNotify */
+@@ -489,7 +492,7 @@ GetTkWindowFromXEvent(
+ *
+ * GetEventMaskFromXEvent --
+ *
+- * The event type is looked up in our eventMasks table, and may be
++ * The event type is looked up in our eventMasks tables, and may be
+ * changed to a different mask depending on the state of the event and
+ * window members.
+ *
+@@ -506,7 +509,23 @@ static unsigned long
+ GetEventMaskFromXEvent(
+ XEvent *eventPtr)
+ {
+- unsigned long mask = eventMasks[eventPtr->xany.type];
++ unsigned long mask;
++
++ /*
++ * Get the event mask from the correct table. Note that there are two
++ * tables here because that means we no longer need this code to rely on
++ * the exact value of VirtualEvent, which has caused us problems in the
++ * past when X11 changed the value of LASTEvent. [Bug ???]
++ */
++
++ if (eventPtr->xany.type <= MappingNotify) {
++ mask = realEventMasks[eventPtr->xany.type];
++ } else if (eventPtr->xany.type >= VirtualEvent
++ && eventPtr->xany.type<TK_LASTEVENT) {
++ mask = virtualEventMasks[eventPtr->xany.type - VirtualEvent];
++ } else {
++ mask = 0;
++ }
+
+ /*
+ * Events selected by StructureNotify require special handling. They look
+diff -up tk8.5.3/generic/tk.h.crash1 tk8.5.3/generic/tk.h
+--- tk8.5.3/generic/tk.h.crash1 2008-06-30 05:37:37.000000000 +0200
++++ tk8.5.3/generic/tk.h 2008-08-06 09:47:40.000000000 +0200
+@@ -627,17 +627,15 @@ typedef struct Tk_GeomMgr {
+ *---------------------------------------------------------------------------
+ */
+
+-#define VirtualEvent (LASTEvent)
+-#define ActivateNotify (LASTEvent + 1)
+-#define DeactivateNotify (LASTEvent + 2)
+-#define MouseWheelEvent (LASTEvent + 3)
+-#define TK_LASTEVENT (LASTEvent + 4)
++#define VirtualEvent (MappingNotify + 1)
++#define ActivateNotify (MappingNotify + 2)
++#define DeactivateNotify (MappingNotify + 3)
++#define MouseWheelEvent (MappingNotify + 4)
++#define TK_LASTEVENT (MappingNotify + 5)
+
+ #define MouseWheelMask (1L << 28)
+-
+ #define ActivateMask (1L << 29)
+ #define VirtualEventMask (1L << 30)
+-#define TK_LASTEVENT (LASTEvent + 4)
+
+ /*
+ * A virtual event shares most of its fields with the XKeyEvent and
================================================================
More information about the pld-cvs-commit
mailing list