summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfvogel <fvogel@noemail.net>2016-08-29 15:45:52 (GMT)
committerfvogel <fvogel@noemail.net>2016-08-29 15:45:52 (GMT)
commit59558012e160786f45af50b14045953593437370 (patch)
tree4123650cd41e5798ca888a1354f77c01aefa63c3
parente43c20199c100c1d1302cb001bb92c6880582988 (diff)
parent5f8328644aa6f44447ff7f3a8718bed0c21827e8 (diff)
downloadtk-59558012e160786f45af50b14045953593437370.zip
tk-59558012e160786f45af50b14045953593437370.tar.gz
tk-59558012e160786f45af50b14045953593437370.tar.bz2
Fixed [fa32290898] - Can't dismiss ttk::menubutton menu until mouse has hovered over it
FossilOrigin-Name: ef1b7ba67b415fda4c1762845d598d6e31286fe7
-rw-r--r--library/menu.tcl4
-rw-r--r--tests/menu.test29
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