Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 12098)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 12099)
@@ -41,9 +41,10 @@
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.ProjectionBounds;
-import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.ViewportData;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.imagery.ImageryInfo;
+import org.openstreetmap.josm.data.osm.DataSelectionListener;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
 import org.openstreetmap.josm.data.osm.visitor.paint.PaintColors;
 import org.openstreetmap.josm.data.osm.visitor.paint.Rendering;
@@ -269,5 +270,5 @@
 
         // listens to selection changes to redraw the map
-        DataSet.addSelectionListener(repaintSelectionChangedListener);
+        SelectionEventManager.getInstance().addSelectionListenerForEdt(repaintSelectionChangedListener);
 
         //store the last mouse action
@@ -742,5 +743,5 @@
     }
 
-    private final transient SelectionChangedListener repaintSelectionChangedListener = newSelection -> repaint();
+    private final transient DataSelectionListener repaintSelectionChangedListener = event -> repaint();
 
     /**
@@ -751,5 +752,5 @@
         layerManager.removeActiveLayerChangeListener(this);
         Main.pref.removePreferenceChangeListener(this);
-        DataSet.removeSelectionListener(repaintSelectionChangedListener);
+        SelectionEventManager.getInstance().removeSelectionListener(repaintSelectionChangedListener);
         MultipolygonCache.getInstance().clear();
         if (mapMover != null) {
