diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2016-04-30 15:50:35 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2016-04-30 15:50:35 (GMT) |
commit | acdaf387562f63cecd2e448c4790aa5e02bd89a9 (patch) | |
tree | cced88c7ae19e050fe67d5533cf9567baefd5971 | |
parent | dd7c680bf0627dc809b4b205ad1258100deaa466 (diff) | |
download | tk-acdaf387562f63cecd2e448c4790aa5e02bd89a9.zip tk-acdaf387562f63cecd2e448c4790aa5e02bd89a9.tar.gz tk-acdaf387562f63cecd2e448c4790aa5e02bd89a9.tar.bz2 |
Experiment: can it be done without a busy wait as well? Not tested on all platforms yet, feedback appreciated!bug_011706ec42_without_busy_wait
-rw-r--r-- | library/button.tcl | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/library/button.tcl b/library/button.tcl index 16624e7..469a9a8 100644 --- a/library/button.tcl +++ b/library/button.tcl @@ -589,6 +589,20 @@ proc ::tk::ButtonUp w { # Shared routines ################## +# ::tk::ButtonInvokeEnd -- +# The procedure below is called after a button is invoked through +# the keyboard. It simulate a release of the button via the mouse. +# +# Arguments: +# w - The name of the widget. + +proc ::tk::ButtonInvokeEnd {w oldState oldRelief} { + if {[winfo exists $w]} { + $w configure -state $oldState -relief $oldRelief + uplevel #0 [list $w invoke] + } +} + # ::tk::ButtonInvoke -- # The procedure below is called when a button is invoked through # the keyboard. It simulate a press of the button via the mouse. @@ -601,12 +615,7 @@ proc ::tk::ButtonInvoke w { set oldRelief [$w cget -relief] set oldState [$w cget -state] $w configure -state active -relief sunken - update idletasks - after 100 - if {[winfo exists $w]} { - $w configure -state $oldState -relief $oldRelief - uplevel #0 [list $w invoke] - } + after 100 [list ::tk::ButtonInvokeEnd $w $oldState $oldRelief] } } |