Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 17439)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java	(revision 17440)
@@ -191,4 +191,7 @@
         map.keyDetector.removeModifierExListener(this);
         temporaryLayer.invalidate();
+        targetWay = null;
+        candidateNode = null;
+        candidateSegment = null;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 17439)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/DeleteFromRelationConfirmationDialog.java	(revision 17440)
@@ -169,6 +169,9 @@
             ).applySafe(this);
             setCanceled(false);
-        } else if (isShowing()) { // Avoid IllegalComponentStateException like in #8775
-            new WindowGeometry(this).remember(getClass().getName() + ".geometry");
+        } else {
+            if (isShowing()) { // Avoid IllegalComponentStateException like in #8775
+                new WindowGeometry(this).remember(getClass().getName() + ".geometry");
+            }
+            model.data.clear();
         }
         super.setVisible(visible);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 17439)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 17440)
@@ -175,4 +175,8 @@
     private final transient MainLayerManager layerManager;
 
+    private PopupMenuHandler popupHandler;
+
+    private LayerListModelListener modelListener;
+
     /**
      * registers (shortcut to toggle right hand side toggle dialogs)+(number keys) shortcuts
@@ -212,5 +216,6 @@
         TableHelper.setFont(layerList, getClass());
         layerList.setSelectionModel(selectionModel);
-        layerList.addMouseListener(new PopupMenuHandler());
+        popupHandler = new PopupMenuHandler();
+        layerList.addMouseListener(popupHandler);
         layerList.setBackground(UIManager.getColor("Button.background"));
         layerList.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
@@ -274,18 +279,18 @@
         model.populate();
         model.setSelectedLayer(layerManager.getActiveLayer());
-        model.addLayerListModelListener(
-                new LayerListModelListener() {
-                    @Override
-                    public void makeVisible(int row, Layer layer) {
-                        layerList.scrollToVisible(row, 0);
-                        layerList.repaint();
-                    }
-
-                    @Override
-                    public void refresh() {
-                        layerList.repaint();
-                    }
-                }
-                );
+        modelListener = new LayerListModelListener() {
+            @Override
+            public void makeVisible(int row, Layer layer) {
+                layerList.scrollToVisible(row, 0);
+                layerList.repaint();
+            }
+
+            @Override
+            public void refresh() {
+                layerList.repaint();
+            }
+        };
+
+        model.addLayerListModelListener(modelListener);
 
         // -- move up action
@@ -398,4 +403,5 @@
         JumpToMarkerActions.unregisterActions();
         layerList.setTransferHandler(null);
+        layerList.removeMouseListener(popupHandler);
         DISPLAY_NUMBERS.removeListener(visibilityWidthListener);
         ExpertToggleAction.removeExpertModeChangeListener(visibilityWidthListener);
@@ -403,4 +409,5 @@
         cycleLayerUpAction.destroy();
         cycleLayerDownAction.destroy();
+        model.removeLayerListModelListener(modelListener);
         super.destroy();
         instance = null;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 17439)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 17440)
@@ -248,4 +248,6 @@
     private final transient TaggingPresetHandler presetHandler = new TaggingPresetCommandHandler();
 
+    private PopupMenuLauncher popupMenuLauncher;
+
     private static final BooleanProperty PROP_AUTORESIZE_TAGS_TABLE = new BooleanProperty("propertiesdialog.autoresizeTagsTable", false);
 
@@ -419,5 +421,5 @@
         });
 
-        membershipTable.addMouseListener(new PopupMenuLauncher(membershipMenu) {
+        popupMenuLauncher = new PopupMenuLauncher(membershipMenu) {
             @Override
             protected int checkTableSelection(JTable table, Point p) {
@@ -446,5 +448,6 @@
                 highlightHelper.clear();
             }
-        });
+        };
+        membershipTable.addMouseListener(popupMenuLauncher);
     }
 
@@ -614,4 +617,5 @@
     public void destroy() {
         destroyTaginfoNationalActions();
+        membershipTable.removeMouseListener(popupMenuLauncher);
         super.destroy();
         Config.getPref().removeKeyPreferenceChangeListener("display.discardable-keys", preferenceListener);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 17439)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 17440)
@@ -186,5 +186,7 @@
         if (editorAccess.getEditor() instanceof Component) {
             ((Component) editorAccess.getEditor()).setVisible(false);
+            editorAccess.getEditor().setRelation(null);
         }
+
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 17439)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 17440)
@@ -1119,4 +1119,6 @@
         data.removeDataSetListener(dataSetListenerAdapter);
         data.removeDataSetListener(MultipolygonCache.getInstance());
+        data.clearSelection();
+        validationErrors.clear();
         removeClipboardDataFor(this);
         recentRelations.clear();
