Index: trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 356)
+++ trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 357)
@@ -63,8 +63,8 @@
 	    return o instanceof Way ? Long.valueOf(id).compareTo(o.id) : -1;
     }
-	
+
 	@Deprecated
 	public boolean isIncomplete() {
-		return false;
+		return incomplete;
 	}
 }
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java	(revision 356)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java	(revision 357)
@@ -93,4 +93,6 @@
 	 */
 	public void visit(Node n) {
+		if (n.incomplete) return;
+
 		Color color = null;
 		if (inactive)
@@ -108,4 +110,6 @@
 	 */
 	public void visit(Way w) {
+		if (w.incomplete) return;
+
 		Color wayColor;
 		if (inactive)
Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 356)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 357)
@@ -132,5 +132,5 @@
 		Node minPrimitive = null;
 		for (Node n : Main.ds.nodes) {
-			if (n.deleted)
+			if (n.deleted || n.incomplete)
 				continue;
 			Point sp = getPoint(n.eastNorth);
Index: trunk/src/org/openstreetmap/josm/gui/SelectionManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 356)
+++ trunk/src/org/openstreetmap/josm/gui/SelectionManager.java	(revision 357)
@@ -297,5 +297,5 @@
 			// nodes
 			for (Node n : Main.ds.nodes) {
-				if (!n.deleted && r.contains(nc.getPoint(n.eastNorth)))
+				if (!n.deleted && !n.incomplete && r.contains(nc.getPoint(n.eastNorth)))
 					selection.add(n);
 			}
@@ -303,24 +303,24 @@
 			// ways
 			for (Way w : Main.ds.ways) {
-				if (w.deleted || w.nodes.isEmpty())
+				if (w.deleted || w.nodes.isEmpty() || w.incomplete)
 						continue;
 				if (alt) {
 					for (Node n : w.nodes) {
-						if (r.contains(nc.getPoint(n.eastNorth))) {
+						if (!n.incomplete && r.contains(nc.getPoint(n.eastNorth))) {
 							selection.add(w);
-						break;
+							break;
+						}
 					}
-				}
 				} else {
 					boolean allIn = true;
 					for (Node n : w.nodes) {
-						if (!r.contains(nc.getPoint(n.eastNorth))) {
+						if (!n.incomplete && !r.contains(nc.getPoint(n.eastNorth))) {
 							allIn = false;
 							break;
-			}
-		}
+						}
+					}
 					if (allIn) selection.add(w);
 				}
-	}
+			}
 		}
 		return selection;
