summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrant Gayed <ggayed>2007-03-15 19:58:32 +0000
committerGrant Gayed <ggayed>2007-03-15 19:58:32 +0000
commitc96ffc5d5f56dd00fd47ca7ac27f555c76b7a44b (patch)
treee7e0d71f61a5763a21716d0c628862551f81978a
parentab7b9c6531db6179cbefc7ad6c1c3c8ba18780a5 (diff)
downloadeclipse.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.java11
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) {