summaryrefslogtreecommitdiff
blob: 498100bc476ee0017629c5aa1c1dba16d21f29ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/lib-tk/Tkinter.py,v
retrieving revision 1.160.10.2
retrieving revision 1.160.10.3
diff -u -r1.160.10.2 -r1.160.10.3
--- python/python/dist/src/Lib/lib-tk/Tkinter.py	2002/08/23 15:27:52	1.160.10.2
+++ python/python/dist/src/Lib/lib-tk/Tkinter.py	2003/03/29 09:48:12	1.160.10.3
@@ -27,7 +27,7 @@
 tk.mainloop()
 """
 
-__version__ = "$Revision: 1.1 $"
+__version__ = "$Revision: 1.1 $"
 
 import sys
 if sys.platform == "win32":
@@ -1024,38 +1024,54 @@
         """Internal function."""
         if len(args) != len(self._subst_format): return args
         getboolean = self.tk.getboolean
+
         getint = int
+        def getint_event(s):
+            """Tk changed behavior in 8.4.2, returning "??" rather more often."""
+            try:
+                return int(s)
+            except ValueError:
+                return s
+
         nsign, b, f, h, k, s, t, w, x, y, A, E, K, N, W, T, X, Y, D = args
         # Missing: (a, c, d, m, o, v, B, R)
         e = Event()
+        # serial field: valid vor all events
+        # number of button: ButtonPress and ButtonRelease events only
+        # height field: Configure, ConfigureRequest, Create,
+        # ResizeRequest, and Expose events only
+        # keycode field: KeyPress and KeyRelease events only
+        # time field: "valid for events that contain a time field"
+        # width field: Configure, ConfigureRequest, Create, ResizeRequest,
+        # and Expose events only
+        # x field: "valid for events that contain a x field"
+        # y field: "valid for events that contain a y field"
+        # keysym as decimal: KeyPress and KeyRelease events only
+        # x_root, y_root fields: ButtonPress, ButtonRelease, KeyPress,
+        # KeyRelease,and Motion events
         e.serial = getint(nsign)
-        e.num = getint(b)
+        e.num = getint_event(b)
         try: e.focus = getboolean(f)
         except TclError: pass
-        e.height = getint(h)
-        e.keycode = getint(k)
-        # For Visibility events, event state is a string and
-        # not an integer:
-        try:
-            e.state = getint(s)
-        except ValueError:
-            e.state = s
-        e.time = getint(t)
-        e.width = getint(w)
-        e.x = getint(x)
-        e.y = getint(y)
+        e.height = getint_event(h)
+        e.keycode = getint_event(k)
+        e.state = getint_event(s)
+        e.time = getint_event(t)
+        e.width = getint_event(w)
+        e.x = getint_event(x)
+        e.y = getint_event(y)
         e.char = A
         try: e.send_event = getboolean(E)
         except TclError: pass
         e.keysym = K
-        e.keysym_num = getint(N)
+        e.keysym_num = getint_event(N)
         e.type = T
         try:
             e.widget = self._nametowidget(W)
         except KeyError:
             e.widget = W
-        e.x_root = getint(X)
-        e.y_root = getint(Y)
+        e.x_root = getint_event(X)
+        e.y_root = getint_event(Y)
         try:
             e.delta = getint(D)
         except ValueError: