Index: trunk/src/org/openstreetmap/josm/command/DeletedStateConflictResolveCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/DeletedStateConflictResolveCommand.java	(revision 6885)
+++ trunk/src/org/openstreetmap/josm/command/DeletedStateConflictResolveCommand.java	(revision 6886)
@@ -5,4 +5,5 @@
 
 import java.util.Collection;
+import java.util.Set;
 
 import javax.swing.Icon;
@@ -11,10 +12,9 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.conflict.pair.MergeDecisionType;
-import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
  * Represents the resolution of a conflict between the deleted flag of two {@link OsmPrimitive}s.
- *
+ * @since 1654
  */
 public class DeletedStateConflictResolveCommand extends ConflictResolveCommand {
@@ -27,5 +27,5 @@
 
     /**
-     * constructor
+     * Constructs a new {@code DeletedStateConflictResolveCommand}.
      *
      * @param conflict the conflict data set
@@ -49,10 +49,6 @@
     @Override
     public boolean executeCommand() {
-        // remember the current state of modified primitives, i.e. of
-        // OSM primitive 'my'
-        //
+        // remember the current state of modified primitives, i.e. of OSM primitive 'my'
         super.executeCommand();
-
-        OsmDataLayer layer = getLayer();
 
         if (decision.equals(MergeDecisionType.KEEP_MINE)) {
@@ -60,12 +56,9 @@
                 // because my was involved in a conflict it my still be referred
                 // to from a way or a relation. Fix this now.
-                //
-                layer.data.unlinkReferencesToPrimitive(conflict.getMy());
-                conflict.getMy().setDeleted(true);
+                deleteMy();
             }
         } else if (decision.equals(MergeDecisionType.KEEP_THEIR)) {
             if (conflict.getTheir().isDeleted()) {
-                layer.data.unlinkReferencesToPrimitive(conflict.getMy());
-                conflict.getMy().setDeleted(true);
+                deleteMy();
             } else {
                 conflict.getMy().setDeleted(false);
@@ -78,4 +71,14 @@
         return true;
     }
+    
+    private void deleteMy() {
+        Set<OsmPrimitive> referrers = getLayer().data.unlinkReferencesToPrimitive(conflict.getMy());
+        for (OsmPrimitive p : referrers) {
+            if (!p.isNew() && !p.isDeleted()) {
+                p.setModified(true);
+            }
+        }
+        conflict.getMy().setDeleted(true);
+    }
 
     @Override
Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 6885)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 6886)
@@ -10,4 +10,5 @@
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
@@ -814,9 +815,11 @@
 
     /**
-     * removes all references from ways in this dataset to a particular node
+     * Removes all references from ways in this dataset to a particular node.
      *
      * @param node the node
-     */
-    public void unlinkNodeFromWays(Node node) {
+     * @return The set of ways that have been modified
+     */
+    public Set<Way> unlinkNodeFromWays(Node node) {
+        Set<Way> result = new HashSet<Way>();
         beginUpdate();
         try {
@@ -829,4 +832,5 @@
                         way.setNodes(wayNodes);
                     }
+                    result.add(way);
                 }
             }
@@ -834,4 +838,5 @@
             endUpdate();
         }
+        return result;
     }
 
@@ -840,6 +845,8 @@
      *
      * @param primitive the primitive
-     */
-    public void unlinkPrimitiveFromRelations(OsmPrimitive primitive) {
+     * @return The set of relations that have been modified
+     */
+    public Set<Relation> unlinkPrimitiveFromRelations(OsmPrimitive primitive) {
+        Set<Relation> result = new HashSet<Relation>();
         beginUpdate();
         try {
@@ -859,4 +866,5 @@
                 if (removed) {
                     relation.setMembers(members);
+                    result.add(relation);
                 }
             }
@@ -864,24 +872,25 @@
             endUpdate();
         }
-    }
-
-    /**
-     * removes all references from other primitives to the
-     * referenced primitive
+        return result;
+    }
+
+    /**
+     * Removes all references from other primitives to the referenced primitive.
      *
      * @param referencedPrimitive the referenced primitive
-     */
-    public void unlinkReferencesToPrimitive(OsmPrimitive referencedPrimitive) {
+     * @return The set of primitives that have been modified
+     */
+    public Set<OsmPrimitive> unlinkReferencesToPrimitive(OsmPrimitive referencedPrimitive) {
+        Set<OsmPrimitive> result = new HashSet<OsmPrimitive>();
         beginUpdate();
         try {
             if (referencedPrimitive instanceof Node) {
-                unlinkNodeFromWays((Node)referencedPrimitive);
-                unlinkPrimitiveFromRelations(referencedPrimitive);
-            } else {
-                unlinkPrimitiveFromRelations(referencedPrimitive);
-            }
+                result.addAll(unlinkNodeFromWays((Node)referencedPrimitive));
+            }
+            result.addAll(unlinkPrimitiveFromRelations(referencedPrimitive));
         } finally {
             endUpdate();
         }
+        return result;
     }
 
