This is the mail archive of the
insight@sources.redhat.com
mailing list for the Insight project.
Re: Modal Dialogs lose grab when comboboxes are used
- From: "Martin M. Hunt" <hunt at redhat dot com>
- To: Fernando Nasser <fnasser at redhat dot com>
- Cc: insight at sources dot redhat dot com
- Date: Tue, 24 Sep 2002 20:15:19 -0700
- Subject: Re: Modal Dialogs lose grab when comboboxes are used
- References: <3D88E72F.3040406@redhat.com> <3D88F595.1040902@redhat.com>
Fernando,
Did you forget something? This breaks all the comboboxes on Insight.
Looks like grabstatus is not initialized. Doing that gets things
working for me, but I did not look very closely.
Index: combobox.tcl
===================================================================
RCS file: /cvs/src/src/libgui/library/combobox.tcl,v
retrieving revision 1.4
diff -u -u -r1.4 combobox.tcl
--- combobox.tcl 20 Sep 2002 17:38:52 -0000 1.4
+++ combobox.tcl 25 Sep 2002 03:11:01 -0000
@@ -107,7 +107,7 @@
variable oldValue
variable ignoreTrace
variable grablist
- variable grabstatus
+ variable grabstatus ""
variable this
array set widgets {}
Martin
Fernando Nasser wrote:
Martin,
Here is a more complete version of the fix.
I was not keeping track if the old grabs were local or global.
Regards,
Fernando
------------------------------------------------------------------------
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)