Index: library/combobox.tcl =================================================================== RCS file: /cvs/src/src/libgui/library/combobox.tcl,v retrieving revision 1.2 diff -c -p -r1.2 combobox.tcl *** library/combobox.tcl 8 Sep 2001 22:34:46 -0000 1.2 --- library/combobox.tcl 18 Sep 2002 21:49:20 -0000 *************** proc ::combobox::build {w args } { *** 106,111 **** --- 106,113 ---- variable options variable oldValue variable ignoreTrace + variable grablist + variable grabstatus variable this array set widgets {} *************** proc ::combobox::doInternalWidgetCommand *** 677,682 **** --- 679,686 ---- proc ::combobox::widgetProc {w command args} { upvar ::combobox::${w}::widgets widgets upvar ::combobox::${w}::options options + upvar ::combobox::${w}::grablist grablist + upvar ::combobox::${w}::grabstatus grabstatus # this is just shorthand notation... set doWidgetCommand \ *************** proc ::combobox::widgetProc {w command a *** 787,792 **** --- 791,800 ---- # *gasp* do a global grab!!! Mom always told not to # do things like this... :-) + set grablist [grab current] + foreach grabitem $grablist { + lappend grabstatus [grab status $grabitem] + } grab -global $widgets(this) # fake the listbox into thinking it has focus *************** proc ::combobox::widgetProc {w command a *** 802,807 **** --- 810,824 ---- } # hides the listbox grab release $widgets(this) + foreach grabitem $grablist itemstatus $grabstatus { + if {$itemstatus == "global"} { + grab set -global $grabitem + } else { + grab set $grabitem + } + } + set grablist {} + set grabstatus {} $widgets(button) configure -relief raised wm withdraw $widgets(popup)