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


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


--
Fernando Nasser
Red Hat - Toronto                       E-Mail:  fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario   M4P 2C9
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]