PR# 12510 Control+Tab inactivated for awhile after Control+Tab with scroll
Problem Report Summary
			
									Submitter:	prestoat2000 
								
								
									Category:	EiffelStudio 
								
								
									Priority:	Medium 
								
							
									Date:	2007/04/22 
								
								
									Class:	Bug 
								
								
									Severity: Serious 
								
							
									Number:	12510 
								
								
									Release:	6.0.67948 
								
								
								
									
										Confidential: No 
									
								
							
									Status: Analyzed 
								
								
									Responsible: alexk_es 
								
							
									Environment: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1.2) Gecko/20070225 Firefox/2.0.0.2
Solaris 10 on x86 
								
							
									Synopsis: Control+Tab inactivated for awhile after Control+Tab with scroll 
								
							Description
										Hold Ctrl key and type Tab. Brings up window with a list of tools. Press left mouse button and drag a scroll bar in this window to the right. Keep left mouse button pressed. Release Ctrl key, then release left mouse button. Now type Ctrl+Tab again. Should bring up window to select tool, but does not bring up any window.
To Reproduce
										Problem Report Interactions
			I cannot reproduce this bug any longer because the window displayed by Ctrl+Tab does not have any scroll bars, no matter how many Editor windows I create. So perhaps it should be closed, but I will leave that to you.
Hi, Ian,
I know how to fix this bug now. :D
Just use attached {SD_ZONE_NAVIGATION_DIALOG} to replace the original one.
If you diff, you will see the change is calling
{EV_GTK_EXTERNALS}.gtk_widget_destroy (l_c_object)
when {EV_SCROLLABLE_AREA} is destroyed. I think this API can let GTK clean up all events hooked on {EV_SCROLLABLE_AREA} (pointer press/release event in this bug).
I don't understand why `{EV_GTK_EXTERNALS}.gtk_widget_destroy' is not called when {EV_WIDGET} destroyed. The comments of {EV_ANY_I}.destroy are:
-- Gtk representation of `Current' may only be cleaned up on dispose to prevent crashes where `Current' is
-- destroyed as a result of `Current's event handler being called, this causes instability within gtk
What's the `instability within gtk' exactly...? I think {EV_WIDGET_IMP}.destroy should call `{EV_GTK_EXTERNALS}.gtk_widget_destroy (l_c_object)'.
Thanks
											
											
											See bug#13108.