diff options
author | Grant Gayed <ggayed> | 2007-03-15 19:58:32 +0000 |
---|---|---|
committer | Grant Gayed <ggayed> | 2007-03-15 19:58:32 +0000 |
commit | c96ffc5d5f56dd00fd47ca7ac27f555c76b7a44b (patch) | |
tree | e7e0d71f61a5763a21716d0c628862551f81978a | |
parent | ab7b9c6531db6179cbefc7ad6c1c3c8ba18780a5 (diff) | |
download | eclipse.platform.swt-c96ffc5d5f56dd00fd47ca7ac27f555c76b7a44b.tar.gz eclipse.platform.swt-c96ffc5d5f56dd00fd47ca7ac27f555c76b7a44b.tar.xz eclipse.platform.swt-c96ffc5d5f56dd00fd47ca7ac27f555c76b7a44b.zip |
177616
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java index c82864b20c..ab8ff7505f 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/gtk/org/eclipse/swt/browser/MozillaDelegate.java @@ -20,6 +20,7 @@ class MozillaDelegate { Browser browser; int /*long*/ mozillaHandle; boolean hasFocus; + Listener listener; static Callback eventCallback; static int /*long*/ eventProc; static final int STOP_PROPOGATE = 1; @@ -154,15 +155,15 @@ int /*long*/ gtk_event (int /*long*/ handle, int /*long*/ gdkEvent, int /*long*/ 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; } - }; browser.getDisplay ().addFilter (SWT.FocusIn, listener); browser.getShell ().addListener (SWT.Deactivate, listener); @@ -170,6 +171,12 @@ void handleFocus () { void onDispose (int /*long*/ embedHandle) { browser.getDisplay ().setData (ADD_WIDGET_KEY, new Object[] {new LONG (mozillaHandle), null}); + if (listener != null) { + browser.getDisplay ().removeFilter (SWT.FocusIn, listener); + browser.getShell ().removeListener (SWT.Deactivate, listener); + listener = null; + } + browser = null; } void setSize (int /*long*/ embedHandle, int width, int height) { |