diff options
author | fvogel <fvogelnew1@free.fr> | 2020-03-12 20:55:45 (GMT) |
---|---|---|
committer | fvogel <fvogelnew1@free.fr> | 2020-03-12 20:55:45 (GMT) |
commit | b36fe5790a29cf78c58ab273cce93ab0604076ba (patch) | |
tree | e48fb16f01ff1bf29a7e6005b8c8de81b7d848ef | |
parent | 56bac29b07ed375d5e8340d16a3aeaf765c7cd76 (diff) | |
parent | 3225b5d516ebdfe6473130f7ac71465a70a9fcd9 (diff) | |
download | tk-b36fe5790a29cf78c58ab273cce93ab0604076ba.zip tk-b36fe5790a29cf78c58ab273cce93ab0604076ba.tar.gz tk-b36fe5790a29cf78c58ab273cce93ab0604076ba.tar.bz2 |
Fix [08e2f8e6f0]: unable to change focus after prior selection of focus
-rw-r--r-- | generic/tkFocus.c | 2 | ||||
-rw-r--r-- | tests/focus.test | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/generic/tkFocus.c b/generic/tkFocus.c index 40ef139..8066afd 100644 --- a/generic/tkFocus.c +++ b/generic/tkFocus.c @@ -603,7 +603,7 @@ TkSetFocusWin( if (displayFocusPtr->focusOnMapPtr != NULL) { Tk_DeleteEventHandler((Tk_Window) displayFocusPtr->focusOnMapPtr, - StructureNotifyMask, FocusMapProc, + VisibilityChangeMask, FocusMapProc, displayFocusPtr->focusOnMapPtr); displayFocusPtr->focusOnMapPtr = NULL; } diff --git a/tests/focus.test b/tests/focus.test index 1770427..7da289d 100644 --- a/tests/focus.test +++ b/tests/focus.test @@ -730,6 +730,26 @@ test focus-6.2 {miscellaneous - embedded application in different process} -cons bind all <FocusOut> {} } -result {{.t.f2.e1 {} {focus out .t.f2.e1 NotifyNonlinear} {focus out .t.f2 NotifyNonlinearVirtual} {focus in .t.f1 NotifyNonlinear} | {focus out .t.f1 NotifyNonlinear} {focus in .t.f2 NotifyNonlinearVirtual} {focus in .t.f2.e1 NotifyNonlinear}} {{focus in . NotifyVirtual} {focus in .e1 NotifyAncestor} | {focus out .e1 NotifyAncestor} {focus out . NotifyVirtual}}} +test focus-7.1 {TkSetFocusWin procedure, unmapped windows} -setup { + # TkSetFocusWin handles the case of not yet mapped windows + # by not setting the focus on them right at the time it is + # requested, but by scheduling an event handler that will + # set the focus later once it gets mapped. The purpose of + # this test is to check that event scheduling and deletion + # work as expected (bug [08e2f8e6f0]). + toplevel .top + spinbox .top.s1 + spinbox .top.s2 + spinbox .top.s3 + grid .top.s1 .top.s2 .top.s3 +} -body { + focus -force .top.s2 + focus -force .top.s3 + update + focus +} -cleanup { + destroy .top +} -result {.top.s3} deleteWindows |