diff options
author | Mikaël Barbero | 2012-08-21 16:13:20 +0000 |
---|---|---|
committer | Mikaël Barbero | 2012-08-21 16:13:20 +0000 |
commit | bbbc5bbcbad559566982108bed9f87fdbf6b8952 (patch) | |
tree | de80fc45b92cbe5281a6a86be5d6f02b67a34fd8 | |
parent | 21a4f475537f5b6d31fa04c5b4e3fd44b6130445 (diff) | |
download | org.eclipse.emf.compare-bbbc5bbcbad559566982108bed9f87fdbf6b8952.tar.gz org.eclipse.emf.compare-bbbc5bbcbad559566982108bed9f87fdbf6b8952.tar.xz org.eclipse.emf.compare-bbbc5bbcbad559566982108bed9f87fdbf6b8952.zip |
hook disposal of control to remove listeners
-rw-r--r-- | plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/AbstractMergeViewer.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/AbstractMergeViewer.java b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/AbstractMergeViewer.java index f7ccca0b2..7659cbf26 100644 --- a/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/AbstractMergeViewer.java +++ b/plugins/org.eclipse.emf.compare.ide.ui/src/org/eclipse/emf/compare/ide/ui/internal/contentmergeviewer/AbstractMergeViewer.java @@ -18,6 +18,8 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
@@ -44,15 +46,24 @@ public abstract class AbstractMergeViewer<C extends Composite> implements IMerge fForwardingSelectionListener = new ForwardingViewerSelectionListener();
fStructuredViewer.addSelectionChangedListener(fForwardingSelectionListener);
+ hookControl(fStructuredViewer.getControl());
}
protected abstract StructuredViewer createStructuredViewer(Composite parent);
+ protected void hookControl(Control control) {
+ control.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent event) {
+ handleDispose(event);
+ }
+ });
+ }
+
protected StructuredViewer getStructuredViewer() {
return fStructuredViewer;
}
- public void dispose() {
+ protected void handleDispose(DisposeEvent event) {
fStructuredViewer.removeSelectionChangedListener(fForwardingSelectionListener);
}
|