Index: /trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 13140)
+++ /trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 13141)
@@ -33,4 +33,5 @@
 import java.util.Collection;
 import java.util.ConcurrentModificationException;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Objects;
@@ -56,6 +57,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
-import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
+import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.SystemOfMeasurement;
 import org.openstreetmap.josm.data.SystemOfMeasurement.SoMChangeListener;
@@ -67,6 +67,9 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
+import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
+import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
 import org.openstreetmap.josm.data.preferences.AbstractProperty;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
@@ -80,4 +83,6 @@
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
+import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.Destroyable;
@@ -85,4 +90,5 @@
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -100,5 +106,6 @@
  * @author imi
  */
-public final class MapStatus extends JPanel implements Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener {
+public final class MapStatus extends JPanel implements
+    Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener, SelectionChangedListener {
 
     private final DecimalFormat DECIMAL_FORMAT = new DecimalFormat(Config.getPref().get("statusbar.decimal-format", "0.0"));
@@ -947,4 +954,5 @@
 
         Config.getPref().addPreferenceChangeListener(this);
+        SelectionEventManager.getInstance().addSelectionListener(this, FireMode.IN_EDT_CONSOLIDATED);
 
         mvComponentAdapter = new ComponentAdapter() {
@@ -1108,4 +1116,5 @@
         SystemOfMeasurement.removeSoMChangeListener(this);
         Config.getPref().removePreferenceChangeListener(this);
+        SelectionEventManager.getInstance().removeSelectionListener(this);
         mv.removeComponentListener(mvComponentAdapter);
 
@@ -1153,3 +1162,22 @@
         return Math.min(80, 20 + Math.max(0, w-1280) * 60 / (1920-1280));
     }
+
+    @Override
+    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
+        if (newSelection.size() == 2) {
+            Iterator<? extends OsmPrimitive> it = newSelection.iterator();
+            OsmPrimitive n1 = it.next();
+            OsmPrimitive n2 = it.next();
+            // show distance between two selected nodes with coordinates
+            if (n1 instanceof Node && n2 instanceof Node) {
+                LatLon c1 = ((Node) n1).getCoor();
+                LatLon c2 = ((Node) n2).getCoor();
+                if (c1 != null && c2 != null) {
+                    setDist(c1.greatCircleDistance(c2));
+                    return;
+                }
+            }
+        }
+        setDist(new SubclassFilteredCollection<OsmPrimitive, Way>(newSelection, Way.class::isInstance));
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 13140)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 13141)
@@ -19,5 +19,4 @@
 import java.util.Comparator;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -44,5 +43,4 @@
 import org.openstreetmap.josm.actions.relation.SelectInRelationListAction;
 import org.openstreetmap.josm.data.SelectionChangedListener;
-import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
@@ -67,5 +65,4 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.gui.MainApplication;
-import org.openstreetmap.josm.gui.MapFrame;
 import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
 import org.openstreetmap.josm.gui.PopupMenuHandler;
@@ -85,5 +82,4 @@
 import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.SubclassFilteredCollection;
 import org.openstreetmap.josm.tools.Utils;
 import org.openstreetmap.josm.tools.bugreport.BugReport;
@@ -618,21 +614,4 @@
                     if (selection != null) {
                         remember(selection);
-                        MapFrame map = MainApplication.getMap();
-                        if (selection.size() == 2) {
-                            Iterator<? extends OsmPrimitive> it = selection.iterator();
-                            OsmPrimitive n1 = it.next();
-                            OsmPrimitive n2 = it.next();
-                            // show distance between two selected nodes with coordinates
-                            if (n1 instanceof Node && n2 instanceof Node) {
-                                LatLon c1 = ((Node) n1).getCoor();
-                                LatLon c2 = ((Node) n2).getCoor();
-                                if (c1 != null && c2 != null) {
-                                    map.statusLine.setDist(c1.greatCircleDistance(c2));
-                                    return;
-                                }
-                            }
-                        }
-                        map.statusLine.setDist(
-                                new SubclassFilteredCollection<OsmPrimitive, Way>(selection, Way.class::isInstance));
                     }
                 }
@@ -695,5 +674,5 @@
 
         /* ------------------------------------------------------------------------ */
-        /* interface SelectionChangeListener                                        */
+        /* interface SelectionChangedListener                                       */
         /* ------------------------------------------------------------------------ */
         @Override
