Posted to tcl by patthoyts at Mon Feb 08 13:57:16 GMT 2010view raw
- # tk busy does not mask off the keyboard events so we set the focus on
- # a mapped but hidden widget and deny the Tab commands so the focus
- # remains in place. If the widget is not mapped, it doesn't receive focus.
- proc Busy {dlg state} {
- variable _busy_$dlg
- if {$state} {
- set busy $dlg.!busy
- if {![winfo exists $busy]} {
- frame $busy -takefocus 1; place $busy -x 0 -y 0; lower $busy
- bind $busy <Tab> {break}
- bind $busy <Shift-Tab> {break}
- }
- set _busy_$dlg [focus]
- focus -force $busy
- tk busy hold $dlg
- } else {
- if {[info exists _busy_$dlg]} {
- focus [set _busy_$dlg]
- unset _busy_$dlg
- }
- tk busy forget $dlg
- }
- }