From 9d6e73267dd9914290919d37a08ed135a10c3462 Mon Sep 17 00:00:00 2001 From: fvogel Date: Sun, 25 Feb 2024 20:27:08 +0000 Subject: Fix [47d4f29159]: Ignored binding scripts for events with detail field NotifyInferior. Patch from Erik Leunissen. --- generic/tkBind.c | 19 ++----------------- tests/bind.test | 4 ++-- tests/event.test | 33 --------------------------------- 3 files changed, 4 insertions(+), 52 deletions(-) diff --git a/generic/tkBind.c b/generic/tkBind.c index 0e46a74..5a42826 100644 --- a/generic/tkBind.c +++ b/generic/tkBind.c @@ -2198,14 +2198,8 @@ Tk_BindEvent( curEvent = bindPtr->eventInfo + eventPtr->type; /* - * Ignore the event completely if it is an Enter, Leave, FocusIn, or - * FocusOut event with detail NotifyInferior. The reason for ignoring - * these events is that we don't want transitions between a window and its - * children to be visible to bindings on the parent: this would cause - * problems for mega-widgets, since the internal structure of a - * mega-widget isn't supposed to be visible to people watching the parent. - * - * Furthermore we have to compute current time, needed for "event generate". + * Compute current time needed for "event generate", + * and reset counters for Key and Button events. */ switch (eventPtr->type) { @@ -2215,15 +2209,6 @@ Tk_BindEvent( bindInfoPtr->lastCurrentTime = CurrentTimeInMilliSecs(); bindInfoPtr->lastEventTime = eventPtr->xcrossing.time; } - if (eventPtr->xcrossing.detail == NotifyInferior) { - return; - } - break; - case FocusIn: - case FocusOut: - if (eventPtr->xfocus.detail == NotifyInferior) { - return; - } break; case KeyPress: case KeyRelease: { diff --git a/tests/bind.test b/tests/bind.test index 17b1fec..2d0cf97 100644 --- a/tests/bind.test +++ b/tests/bind.test @@ -574,7 +574,7 @@ test bind-13.9 {Tk_BindEvent procedure} -setup { } -cleanup { destroy .t.f } -result {{.t.f z (.t.f binding)} {.t.f z (.t.f