summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2012-04-22 22:03:10 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2012-04-22 22:03:10 (GMT)
commita0029792b685e19df1d79a8170579d88416055b0 (patch)
tree55e1cdc16274037a80a6c3cce95cf2c323a5fdb7
parent8077dd948e9d7c758be18837a1cc637007e50084 (diff)
downloadtk-a0029792b685e19df1d79a8170579d88416055b0.zip
tk-a0029792b685e19df1d79a8170579d88416055b0.tar.gz
tk-a0029792b685e19df1d79a8170579d88416055b0.tar.bz2
[Bug 3520202]: %K must not work with <MouseWheel> or effects are undefined!
-rwxr-xr-xChangeLog9
-rw-r--r--[-rwxr-xr-x]generic/tkBind.c8
2 files changed, 13 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 37db952..561a56c 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2012-04-22 Donal K. Fellows <dkf@users.sf.net>
+
+ * generic/tkBind.c (ExpandPercents): [Bug 3520202]: Ensure that the
+ %k, %K and %N substitutions use dummy tokens with <MouseWheel> events
+ and that the %D subsitution is a dummy with <Key>/<KeyRelease>. This
+ was causing significant indigestion (and a read of goodness knows what
+ memory) to Tkinter/Python because of the way they map events between
+ languages.
+
2012-04-20 Jan Nijtmans <nijtmans@users.sf.net>
* generic/tk.tcl: Use vroot size in stead of screen size for
diff --git a/generic/tkBind.c b/generic/tkBind.c
index 3f05ccc..7e8d823 100755..100644
--- a/generic/tkBind.c
+++ b/generic/tkBind.c
@@ -2428,7 +2428,7 @@ ExpandPercents(winPtr, before, eventPtr, keySym, dsPtr)
string = numStorage;
goto doString;
case 'k':
- if (flags & KEY) {
+ if ((flags & KEY) && (eventPtr->type != MouseWheelEvent)) {
number = eventPtr->xkey.keycode;
goto doNumber;
}
@@ -2567,7 +2567,7 @@ ExpandPercents(winPtr, before, eventPtr, keySym, dsPtr)
/*
* This is used only by the MouseWheel event.
*/
- if (flags & KEY) {
+ if ((flags & KEY) && (eventPtr->type == MouseWheelEvent)) {
number = eventPtr->xkey.keycode;
goto doNumber;
}
@@ -2576,7 +2576,7 @@ ExpandPercents(winPtr, before, eventPtr, keySym, dsPtr)
number = (int) eventPtr->xany.send_event;
goto doNumber;
case 'K':
- if (flags & KEY) {
+ if ((flags & KEY) && (eventPtr->type != MouseWheelEvent)) {
char *name;
name = TkKeysymToString(keySym);
@@ -2586,7 +2586,7 @@ ExpandPercents(winPtr, before, eventPtr, keySym, dsPtr)
}
goto doString;
case 'N':
- if (flags & KEY) {
+ if ((flags & KEY) && (eventPtr->type != MouseWheelEvent)) {
number = (int) keySym;
goto doNumber;
}