Index: trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/AbstractInfoAction.java	(revision 5360)
@@ -116,5 +116,5 @@
 
     protected void launchInfoBrowsersForSelectedPrimitives() {
-        ArrayList<OsmPrimitive> primitivesToShow = new ArrayList<OsmPrimitive>(getCurrentDataSet().getSelected());
+        ArrayList<OsmPrimitive> primitivesToShow = new ArrayList<OsmPrimitive>(getCurrentDataSet().getAllSelected());
 
         // filter out new primitives which are not yet uploaded to the server
Index: trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(revision 5360)
@@ -31,5 +31,5 @@
 		DataSet set = getCurrentDataSet();
 		if (set != null) {
-			HistoryBrowserDialogManager.getInstance().showHistory(set.getSelected());
+			HistoryBrowserDialogManager.getInstance().showHistory(set.getAllSelected());
 		}
 	}
@@ -40,5 +40,5 @@
 			setEnabled(false);
 		} else {
-			updateEnabledState(getCurrentDataSet().getSelected());
+			updateEnabledState(getCurrentDataSet().getAllSelected());
 		}
 	}
Index: trunk/src/org/openstreetmap/josm/actions/InfoAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/InfoAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/InfoAction.java	(revision 5360)
@@ -30,5 +30,5 @@
         DataSet set = getCurrentDataSet();
 		if (set != null) {
-			new InspectPrimitiveDialog(set.getSelected(), Main.map.mapView.getEditLayer()).showDialog();
+			new InspectPrimitiveDialog(set.getAllSelected(), Main.map.mapView.getEditLayer()).showDialog();
 		}
     }
@@ -39,5 +39,5 @@
             setEnabled(false);
         } else {
-            updateEnabledState(getCurrentDataSet().getSelected());
+            updateEnabledState(getCurrentDataSet().getAllSelected());
         }
     }
Index: trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 5360)
@@ -61,5 +61,5 @@
         if (!isEnabled())
             return;
-        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
+        Collection<OsmPrimitive> selection = getCurrentDataSet().getAllSelected();
         List<Node> selectedNodes = OsmPrimitive.getFilteredList(selection, Node.class);
 
@@ -330,5 +330,5 @@
             setEnabled(false);
         } else {
-            updateEnabledState(getCurrentDataSet().getSelected());
+            updateEnabledState(getCurrentDataSet().getAllSelected());
         }
     }
Index: trunk/src/org/openstreetmap/josm/actions/MergeSelectionAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeSelectionAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/MergeSelectionAction.java	(revision 5360)
@@ -40,5 +40,5 @@
             return;
         if (getEditLayer().isUploadDiscouraged() && targetLayer instanceof OsmDataLayer && !((OsmDataLayer)targetLayer).isUploadDiscouraged() 
-                && getEditLayer().data.getSelected().size() > 1) {
+                && getEditLayer().data.getAllSelected().size() > 1) {
             if (warnMergingUploadDiscouragedObjects(targetLayer)) {
                 return;
@@ -50,5 +50,5 @@
 
     public void actionPerformed(ActionEvent e) {
-        if (getEditLayer() == null || getEditLayer().data.getSelected().isEmpty())
+        if (getEditLayer() == null || getEditLayer().data.getAllSelected().isEmpty())
             return;
         mergeSelected(getEditLayer().data);
@@ -60,5 +60,5 @@
             setEnabled(false);
         } else {
-            updateEnabledState(getCurrentDataSet().getSelected());
+            updateEnabledState(getCurrentDataSet().getAllSelected());
         }
     }
Index: trunk/src/org/openstreetmap/josm/actions/PurgeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 5360)
@@ -89,5 +89,5 @@
             return;
 
-        Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
+        Collection<OsmPrimitive> sel = getCurrentDataSet().getAllSelected();
         layer = Main.map.mapView.getEditLayer();
 
Index: trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java	(revision 5360)
@@ -102,5 +102,5 @@
             setEnabled(false);
         } else {
-            updateEnabledState(getCurrentDataSet().getSelected());
+            updateEnabledState(getCurrentDataSet().getAllSelected());
         }
     }
@@ -131,5 +131,5 @@
 
     public Collection<OsmPrimitive> getData() {
-        return getCurrentDataSet().getSelected();
+        return getCurrentDataSet().getAllSelected();
     }
 }
Index: trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/UploadSelectionAction.java	(revision 5360)
@@ -54,5 +54,5 @@
             setEnabled(false);
         } else {
-            updateEnabledState(getCurrentDataSet().getSelected());
+            updateEnabledState(getCurrentDataSet().getAllSelected());
         }
     }
@@ -95,5 +95,5 @@
         UploadHullBuilder builder = new UploadHullBuilder();
         UploadSelectionDialog dialog = new UploadSelectionDialog();
-        Collection<OsmPrimitive> modifiedCandidates = getModifiedPrimitives(getEditLayer().data.getSelected());
+        Collection<OsmPrimitive> modifiedCandidates = getModifiedPrimitives(getEditLayer().data.getAllSelected());
         Collection<OsmPrimitive> deletedCandidates = getDeletedPrimitives(getEditLayer().data);
         if (modifiedCandidates.isEmpty() && deletedCandidates.isEmpty()) {
Index: trunk/src/org/openstreetmap/josm/actions/ValidateAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 5360)
@@ -76,5 +76,5 @@
         Collection<OsmPrimitive> selection;
         if (getSelectedItems) {
-            selection = Main.main.getCurrentDataSet().getSelected();
+            selection = Main.main.getCurrentDataSet().getAllSelected();
             if (selection.isEmpty()) {
                 selection = Main.main.getCurrentDataSet().allNonDeletedPrimitives();
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 5360)
@@ -584,5 +584,5 @@
 
         final DataSet ds = Main.main.getCurrentDataSet();
-        Collection<OsmPrimitive> sel = new HashSet<OsmPrimitive>(ds.getSelected());
+        Collection<OsmPrimitive> sel = new HashSet<OsmPrimitive>(ds.getAllSelected());
         int foundMatches = getSelection(s, sel, new Function(){
             public Boolean isSomething(OsmPrimitive o){
Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 5360)
@@ -438,5 +438,5 @@
      */
     public void fireSelectionChanged(){
-        Collection<? extends OsmPrimitive> currentSelection = getSelected();
+        Collection<? extends OsmPrimitive> currentSelection = getAllSelected();
         for (SelectionChangedListener l : selListeners) {
             l.selectionChanged(currentSelection);
@@ -479,9 +479,19 @@
     /**
      * Replies an unmodifiable collection of primitives currently selected
-     * in this dataset. May be empty, but not null.
+     * in this dataset, except deleted ones. May be empty, but not null.
      *
      * @return unmodifiable collection of primitives
      */
     public Collection<OsmPrimitive> getSelected() {
+        return new SubclassFilteredCollection<OsmPrimitive, OsmPrimitive>(getAllSelected(), OsmPrimitive.nonDeletedPredicate);
+    }
+    
+    /**
+     * Replies an unmodifiable collection of primitives currently selected
+     * in this dataset, including deleted ones. May be empty, but not null.
+     *
+     * @return unmodifiable collection of primitives
+     */
+    public Collection<OsmPrimitive> getAllSelected() {
         Collection<OsmPrimitive> currentList;
         synchronized (selectionLock) {
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java	(revision 5360)
@@ -52,5 +52,5 @@
 
     protected boolean isInSelectionBase(OsmPrimitive primitive) {
-        return selectionBase.getSelected().contains(primitive);
+        return selectionBase.getAllSelected().contains(primitive);
     }
 
@@ -184,5 +184,5 @@
 
     public DataSet build() {
-        for (OsmPrimitive primitive: selectionBase.getSelected()) {
+        for (OsmPrimitive primitive: selectionBase.getAllSelected()) {
             primitive.visit(this);
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ChangesetDialog.java	(revision 5360)
@@ -127,5 +127,5 @@
             Main.main.getEditLayer().data.addDataSetListener(inActiveDataLayerModel);
             inActiveDataLayerModel.initFromDataSet(Main.main.getEditLayer().data);
-            inSelectionModel.initFromPrimitives(Main.main.getEditLayer().data.getSelected());
+            inSelectionModel.initFromPrimitives(Main.main.getEditLayer().data.getAllSelected());
         }
     }
@@ -234,5 +234,5 @@
     protected void initWithCurrentData() {
         if (Main.main.getEditLayer() != null) {
-            inSelectionModel.initFromPrimitives(Main.main.getEditLayer().data.getSelected());
+            inSelectionModel.initFromPrimitives(Main.main.getEditLayer().data.getAllSelected());
             inActiveDataLayerModel.initFromDataSet(Main.main.getEditLayer().data);
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/HistoryDialog.java	(revision 5360)
@@ -121,5 +121,5 @@
             model.selectionChanged(null);
         } else {
-            model.selectionChanged(Main.main.getCurrentDataSet().getSelected());
+            model.selectionChanged(Main.main.getCurrentDataSet().getAllSelected());
         }
     }
@@ -197,5 +197,5 @@
             if (Main.main.getCurrentDataSet() == null)
                 return;
-            for (OsmPrimitive primitive: Main.main.getCurrentDataSet().getSelected()) {
+            for (OsmPrimitive primitive: Main.main.getCurrentDataSet().getAllSelected()) {
                 if (primitive.isNew()) {
                     continue;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/InspectPrimitiveDialog.java	(revision 5360)
@@ -319,5 +319,5 @@
 
     protected void createMapPaintText() {
-        final Collection<OsmPrimitive> sel = Main.main.getCurrentDataSet().getSelected();
+        final Collection<OsmPrimitive> sel = Main.main.getCurrentDataSet().getAllSelected();
         ElemStyles elemstyles = MapPaintStyles.getStyles();
         NavigatableComponent nc = Main.map.mapView;
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 5360)
@@ -161,5 +161,5 @@
         model.editLayerChanged(null, Main.map.mapView.getEditLayer());
         if (Main.map.mapView.getEditLayer() != null) {
-            model.setJOSMSelection(Main.map.mapView.getEditLayer().data.getSelected());
+            model.setJOSMSelection(Main.map.mapView.getEditLayer().data.getAllSelected());
         }
         actSearch.updateEnabledState();
@@ -664,5 +664,5 @@
             } else {
                 history = newLayer.data.getSelectionHistory();
-                setJOSMSelection(newLayer.data.getSelected());
+                setJOSMSelection(newLayer.data.getAllSelected());
             }
         }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/UserListDialog.java	(revision 5360)
@@ -136,5 +136,5 @@
     public void activeLayerChange(Layer oldLayer, Layer newLayer) {
         if (newLayer instanceof OsmDataLayer) {
-            refresh(((OsmDataLayer) newLayer).data.getSelected());
+            refresh(((OsmDataLayer) newLayer).data.getAllSelected());
         } else {
             refresh(null);
@@ -165,5 +165,5 @@
         Layer layer = Main.main.getActiveLayer();
         if (layer instanceof OsmDataLayer) {
-            refresh(((OsmDataLayer)layer).data.getSelected());
+            refresh(((OsmDataLayer)layer).data.getAllSelected());
         }
 
@@ -275,5 +275,5 @@
             Layer layer = Main.main.getActiveLayer();
             if (layer instanceof OsmDataLayer) {
-                refresh(((OsmDataLayer)layer).data.getSelected());
+                refresh(((OsmDataLayer)layer).data.getAllSelected());
             }
             setEnabled(false);
@@ -390,5 +390,5 @@
                 users.add(data.get(index).user);
             }
-            Collection<OsmPrimitive> selected = Main.main.getCurrentDataSet().getSelected();
+            Collection<OsmPrimitive> selected = Main.main.getCurrentDataSet().getAllSelected();
             Collection<OsmPrimitive> byUser = new LinkedList<OsmPrimitive>();
             for (OsmPrimitive p : selected) {
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 5360)
@@ -168,5 +168,5 @@
         DataSet ds = Main.main.getCurrentDataSet();
         if (ds != null) {
-            updateSelection(ds.getSelected());
+            updateSelection(ds.getAllSelected());
         }
         MapView.addLayerChangeListener(this);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetInSelectionListModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetInSelectionListModel.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetInSelectionListModel.java	(revision 5360)
@@ -30,5 +30,5 @@
             setChangesets(null);
         } else {
-            initFromPrimitives((newLayer).data.getSelected());
+            initFromPrimitives((newLayer).data.getAllSelected());
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java	(revision 5359)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTableModel.java	(revision 5360)
@@ -64,5 +64,5 @@
         }
         if (newLayer == layer) {
-            cache.addAll(((OsmDataLayer)newLayer).data.getSelected());
+            cache.addAll(((OsmDataLayer)newLayer).data.getAllSelected());
         }
         fireTableDataChanged();
@@ -102,5 +102,5 @@
      */
     protected void populateSelectedPrimitives(OsmDataLayer layer) {
-        selectionChanged(layer.data.getSelected());
+        selectionChanged(layer.data.getAllSelected());
     }
 
