summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2012-04-22 22:07:41 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2012-04-22 22:07:41 (GMT)
commit021238ae28d80332aca5ce297082885bf0e798d5 (patch)
treeaf4a5c91d6384103eef0acc48b6817568117b941
parentfd636b80ebd519e891807305cf5c22f69a03edd6 (diff)
parentbcc1d86678bcd77495a02ca7b58041f6c9ff3d1a (diff)
downloadtk-021238ae28d80332aca5ce297082885bf0e798d5.zip
tk-021238ae28d80332aca5ce297082885bf0e798d5.tar.gz
tk-021238ae28d80332aca5ce297082885bf0e798d5.tar.bz2
[Bug 3520202]: %K must not work with <MouseWheel> or effects are undefined!
-rw-r--r--ChangeLog9
-rw-r--r--generic/tkBind.c8
2 files changed, 13 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index e5b5ff3..0e28f30 100644
--- 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 Donal K. Fellows <dkf@users.sf.net>
* generic/tkWindow.c (commands): Ensure that all descriptions of
diff --git a/generic/tkBind.c b/generic/tkBind.c
index 6841f1e..10998fe 100644
--- a/generic/tkBind.c
+++ b/generic/tkBind.c
@@ -2028,7 +2028,7 @@ ExpandPercents(
string = numStorage;
goto doString;
case 'k':
- if (flags & KEY) {
+ if ((flags & KEY) && (eventPtr->type != MouseWheelEvent)) {
number = eventPtr->xkey.keycode;
goto doNumber;
}
@@ -2168,7 +2168,7 @@ ExpandPercents(
* This is used only by the MouseWheel event.
*/
- if (flags & KEY) {
+ if ((flags & KEY) && (eventPtr->type == MouseWheelEvent)) {
number = eventPtr->xkey.keycode;
goto doNumber;
}
@@ -2177,7 +2177,7 @@ ExpandPercents(
number = (int) eventPtr->xany.send_event;
goto doNumber;
case 'K':
- if (flags & KEY) {
+ if ((flags & KEY) && (eventPtr->type != MouseWheelEvent)) {
const char *name = TkKeysymToString(keySym);
if (name != NULL) {
@@ -2186,7 +2186,7 @@ ExpandPercents(
}
goto doString;
case 'N':
- if (flags & KEY) {
+ if ((flags & KEY) && (eventPtr->type != MouseWheelEvent)) {
number = (int) keySym;
goto doNumber;
}