diff options
author | Grant Gayed <ggayed> | 2007-03-15 21:17:45 +0000 |
---|---|---|
committer | Grant Gayed <ggayed> | 2007-03-15 21:17:45 +0000 |
commit | bd64112265c2a125577ef5db8ecfbdb762c0aeab (patch) | |
tree | 2ed8c125ee978a2171c776ce67a2b03effdd90ce | |
parent | 49c0b804a79ac30f301e8fb0f31e7a8dd1b6578e (diff) | |
download | eclipse.platform.swt-bd64112265c2a125577ef5db8ecfbdb762c0aeab.tar.gz eclipse.platform.swt-bd64112265c2a125577ef5db8ecfbdb762c0aeab.tar.xz eclipse.platform.swt-bd64112265c2a125577ef5db8ecfbdb762c0aeab.zip |
177616
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java index 8ed57a7408..ee384f56b8 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/motif/org/eclipse/swt/browser/MozillaDelegate.java @@ -17,6 +17,7 @@ import org.eclipse.swt.widgets.*; class MozillaDelegate { Browser browser; + Listener listener; boolean hasFocus; static boolean GtkLoaded, IsLinux; @@ -110,13 +111,14 @@ String getLibraryName () { void handleFocus () { if (hasFocus) return; hasFocus = true; - Listener listener = new Listener () { + listener = new Listener () { public void handleEvent (Event event) { if (event.widget == browser) return; ((Mozilla)browser.webBrowser).Deactivate (); hasFocus = false; browser.getDisplay ().removeFilter (SWT.FocusIn, this); browser.getShell ().removeListener (SWT.Deactivate, this); + listener = null; } }; @@ -125,10 +127,18 @@ void handleFocus () { } void onDispose (int embedHandle) { + if (listener != null) { + browser.getDisplay ().removeFilter (SWT.FocusIn, listener); + browser.getShell ().removeListener (SWT.Deactivate, listener); + listener = null; + } + GTK.gtk_widget_destroy (embedHandle); while (GTK.gtk_events_pending () != 0) { GTK.gtk_main_iteration (); } + + browser = null; } void setSize(int embedHandle, int width, int height) { |