diff options
author | fvogelnew1@free.fr <fvogel> | 2016-08-29 15:45:52 (GMT) |
---|---|---|
committer | fvogelnew1@free.fr <fvogel> | 2016-08-29 15:45:52 (GMT) |
commit | c4b5ddd65e57f7b9bd11cffdac9442b5bad58a45 (patch) | |
tree | 4123650cd41e5798ca888a1354f77c01aefa63c3 | |
parent | 434440f1a56538807db2c7c17c6256bb5b1066d3 (diff) | |
parent | 5ad533d7f3398bd50570899900f1431950968f68 (diff) | |
download | tk-c4b5ddd65e57f7b9bd11cffdac9442b5bad58a45.zip tk-c4b5ddd65e57f7b9bd11cffdac9442b5bad58a45.tar.gz tk-c4b5ddd65e57f7b9bd11cffdac9442b5bad58a45.tar.bz2 |
Fixed [fa32290898] - Can't dismiss ttk::menubutton menu until mouse has hovered over it
-rw-r--r-- | library/menu.tcl | 4 | ||||
-rw-r--r-- | tests/menu.test | 29 |
2 files changed, 33 insertions, 0 deletions
diff --git a/library/menu.tcl b/library/menu.tcl index a7aaa3f..b5dd88e 100644 --- a/library/menu.tcl +++ b/library/menu.tcl @@ -607,6 +607,10 @@ proc ::tk::MenuButtonDown menu { if {![winfo viewable $menu]} { return } + if {[$menu index active] eq "none"} { + set Priv(window) {} + return + } $menu postcascade active if {$Priv(postedMb) ne "" && [winfo viewable $Priv(postedMb)]} { grab -global $Priv(postedMb) diff --git a/tests/menu.test b/tests/menu.test index 7931c66..8325e2b 100644 --- a/tests/menu.test +++ b/tests/menu.test @@ -3878,6 +3878,35 @@ test menu-37.1 {menubar menues cannot be posted - bug 2160206} -setup { destroy .m } -result {1 {a menubar menu cannot be posted}} +test menu-38.1 {Can't dismiss ttk::menubutton menu until mouse has hovered over it - bug fa32290898} -setup { +} -body { + toplevel .top + ttk::menubutton .top.mb -text "Some menu"; + menu .top.mb.m; + .top.mb.m add command -label "Item 1"; + .top.mb.m add command -label "Item 2"; + .top.mb configure -menu .top.mb.m; + pack .top.mb + update + # simulate mouse click on the menubutton, which posts its menu + event generate .top.mb <ButtonPress-1> -warp 1 + update + after 50 + event generate .top.mb <ButtonRelease-1> + update + # simulate mouse click on the menu again, i.e. without + # entering/leaving the posted menu + event generate .top.mb <ButtonPress-1> + update + after 50 + event generate .top.mb <ButtonRelease-1> + update + # the menu shall have been unposted by the second click + winfo ismapped .top.mb.m +} -cleanup { + destroy .top.mb.m .top.m .top +} -result {0} + # cleanup imageFinish |