This is the mail archive of the insight@sources.redhat.com mailing list for the Insight project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Modal Dialogs lose grab when comboboxes are used


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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]