From b417ac598f98293caf8869fe0b0ef58a16c5cd8c Mon Sep 17 00:00:00 2001
From: Matthew W. S. Bell <matthew@bells23.org.uk>
Date: Fri, 6 Aug 2010 16:34:08 +0100
Subject: [PATCH 2/4] Only cleanup uploaded deleted nodes.

---
 src/org/openstreetmap/josm/data/osm/DataSet.java   |   12 +-----------
 .../openstreetmap/josm/gui/layer/OsmDataLayer.java |    2 +-
 2 files changed, 2 insertions(+), 12 deletions(-)

diff --git a/src/org/openstreetmap/josm/data/osm/DataSet.java b/src/org/openstreetmap/josm/data/osm/DataSet.java
index 6b37453..7c21a59 100644
--- a/src/org/openstreetmap/josm/data/osm/DataSet.java
+++ b/src/org/openstreetmap/josm/data/osm/DataSet.java
@@ -917,7 +917,7 @@ public class DataSet implements Cloneable {
         synchronized (selectionLock) {
             while (it.hasNext()) {
                 OsmPrimitive primitive = it.next();
-                if (primitive.isDeleted()) {
+                if (primitive.isDeleted() && !primitive.isModified()) {
                     selectedPrimitives.remove(primitive);
                     selectionSnapshot = null;
                     allPrimitives.remove(primitive);
@@ -928,16 +928,6 @@ public class DataSet implements Cloneable {
             }
             if (changed) {
                 selectionSnapshot = null;
-            }
-        }
-        return changed;
-    }
-
-    /**
-     * Removes all primitives from the dataset and resets the currently selected primitives
-     * to the empty collection. Also notifies selection change listeners if necessary.
-     *
-     */
     public void clear() {
         beginUpdate();
         try {
diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
index 7078082..0eef27b 100644
--- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
+++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
@@ -397,12 +397,12 @@ public class OsmDataLayer extends Layer implements Listener, SelectionChangedLis
         Main.main.undoRedo.clean(this);
 
         // if uploaded, clean the modified flags as well
-        data.cleanupDeletedPrimitives();
         for (OsmPrimitive p: data.allPrimitives()) {
             if (processed.contains(p)) {
                 p.setModified(false);
             }
         }
+        data.cleanupDeletedPrimitives();
     }
 
 
-- 
1.7.1

