Index: trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 14950)
+++ trunk/src/org/openstreetmap/josm/actions/ChangesetManagerToggleAction.java	(revision 14951)
@@ -46,5 +46,4 @@
             ChangesetCacheManager.getInstance().setVisible(true);
         } else {
-            ChangesetCacheManager.getInstance().removeWindowListener(changesetCacheManagerClosedHandler);
             ChangesetCacheManager.destroyInstance();
         }
@@ -56,5 +55,4 @@
             setSelected(false);
             notifySelectedState();
-            ChangesetCacheManager.getInstance().removeWindowListener(changesetCacheManagerClosedHandler);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 14950)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 14951)
@@ -65,5 +65,4 @@
 import org.openstreetmap.josm.io.NetworkManager;
 import org.openstreetmap.josm.io.OnlineResource;
-import org.openstreetmap.josm.tools.Destroyable;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.InputMapUtils;
@@ -104,10 +103,6 @@
         if (instance != null) {
             instance.setVisible(false);
+            GuiHelper.destroyComponents(instance, false);
             instance.dispose();
-            for (Component c : instance.pnlChangesetDetailTabs.getComponents()) {
-                if (c instanceof Destroyable) {
-                    ((Destroyable) c).destroy();
-                }
-            }
             instance = null;
         }
@@ -352,5 +347,5 @@
         @Override
         public void windowClosing(WindowEvent e) {
-            new CancelAction().cancelAndClose();
+            destroyInstance();
         }
 
