X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=424d52faf0bdcb0be816fb1965853d7e587bbc31;hb=3446323f14bb8a2842cb83f74ed3f41c99b62759;hp=87d5933a70fddf9974753e87f2ba1d7e4988d1e2;hpb=b7c070c8110258c023fdd6e3b49ad9aab7ad2fa5;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 87d5933..424d52f 100644 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -101,6 +101,8 @@ public class AlignmentPanel extends GAlignmentPanel implements */ private boolean dontScrollComplement; + private PropertyChangeListener propertyChangeListener; + /** * Creates a new AlignmentPanel object. * @@ -135,7 +137,7 @@ public class AlignmentPanel extends GAlignmentPanel implements vscroll.addAdjustmentListener(this); final AlignmentPanel ap = this; - av.addPropertyChangeListener(new PropertyChangeListener() + propertyChangeListener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) @@ -146,7 +148,8 @@ public class AlignmentPanel extends GAlignmentPanel implements alignmentChanged(); } } - }); + }; + av.addPropertyChangeListener(propertyChangeListener); fontChanged(); adjustAnnotationHeight(); updateLayout(); @@ -1595,8 +1598,18 @@ public class AlignmentPanel extends GAlignmentPanel implements PaintRefresher.RemoveComponent(getSeqPanel().seqCanvas); PaintRefresher.RemoveComponent(getIdPanel().getIdCanvas()); PaintRefresher.RemoveComponent(this); + + /* + * try to ensure references are nulled + */ + if (annotationPanel != null) + { + annotationPanel.dispose(); + } + if (av != null) { + av.removePropertyChangeListener(propertyChangeListener); jalview.structure.StructureSelectionManager ssm = av .getStructureSelectionManager(); ssm.removeStructureViewerListener(getSeqPanel(), null); @@ -1604,7 +1617,7 @@ public class AlignmentPanel extends GAlignmentPanel implements ssm.removeCommandListener(av); ssm.removeStructureViewerListener(getSeqPanel(), null); ssm.removeSelectionListener(getSeqPanel()); - av.setAlignment(null); + av.dispose(); av = null; } else