Index: /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 2278)
+++ /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 2279)
@@ -243,5 +243,12 @@
     }
 
-    public void setSelected(Collection<? extends OsmPrimitive> selection) {
+    /**
+     * Sets the current selection to the primitives in <code>selection</code>.
+     * Notifies all {@see SelectionChangedListener} if <code>fireSelectionChangeEvent</code> is true.
+     * 
+     * @param selection the selection
+     * @param fireSelectionChangeEvent true, if the selection change listeners are to be notified; false, otherwise
+     */
+    public void setSelected(Collection<? extends OsmPrimitive> selection, boolean fireSelectionChangeEvent) {
         clearSelection(nodes);
         clearSelection(ways);
@@ -250,6 +257,19 @@
             osm.setSelected(true);
         }
-        fireSelectionChanged(selection);
-    }
+        if (fireSelectionChangeEvent) {
+            fireSelectionChanged(selection);
+        }
+    }
+
+    /**
+     * Sets the current selection to the primitives in <code>selection</code>
+     * and notifies all {@see SelectionChangedListener}.
+     * 
+     * @param selection the selection
+     */
+    public void setSelected(Collection<? extends OsmPrimitive> selection) {
+        setSelected(selection, true /* fire selection change event */);
+    }
+
 
     public void setSelected(OsmPrimitive... osm) {
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2278)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2279)
@@ -19,4 +19,5 @@
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -474,8 +475,9 @@
                 w = new Way(w);
                 w.setNodes(n);
-                if (selected)
-                    data.setSelected(w);
-                else
+                if (selected) {
+                    data.setSelected(Collections.singleton(w),false /* don't notify listeners */);
+                } else {
                     data.clearSelection(w);
+                }
             }
             if(!w.isClosed())
@@ -680,7 +682,7 @@
                     firstNode = lastNode;
                     lastNode = firstNode;
-                }
-                else
+                } else {
                     onewayvia = OsmUtils.getOsmBoolean(onewayviastr);
+                }
             }
 
