Index: /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 2281)
+++ /trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 2282)
@@ -270,4 +270,30 @@
     public void setSelected(Collection<? extends OsmPrimitive> selection) {
         setSelected(selection, true /* fire selection change event */);
+    }
+
+    /**
+     * Adds   the primitives in <code>selection</code> to the current selection
+     * and notifies all {@see SelectionChangedListener}.
+     * 
+     * @param selection the selection
+     */
+    public void addSelected(Collection<? extends OsmPrimitive> selection) {
+        addSelected(selection, true /* fire selection change event */);
+    }
+
+    /**
+     * Adds the primitives in <code>selection</code> to the current selection.
+     * 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 addSelected(Collection<? extends OsmPrimitive> selection, boolean fireSelectionChangeEvent) {
+        for (OsmPrimitive osm : selection) {
+            osm.setSelected(true);
+        }
+        if (fireSelectionChangeEvent) {
+            fireSelectionChanged(selection);
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2281)
+++ /trunk/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java	(revision 2282)
@@ -476,5 +476,5 @@
                 w.setNodes(n);
                 if (selected) {
-                    data.setSelected(Collections.singleton(w),false /* don't notify listeners */);
+                    data.addSelected(Collections.singleton(w),false /* don't notify listeners */);
                 } else {
                     data.clearSelection(w);
