Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 13176)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 13177)
@@ -820,6 +820,4 @@
         mouseOnExistingWays = new HashSet<>();
 
-        showStatusInfo(-1, -1, -1, snapHelper.isSnapOn());
-
         if (!ctrl && mousePos != null) {
             currentMouseNode = mv.getNearestNode(mousePos, OsmPrimitive::isSelectable);
@@ -853,4 +851,5 @@
             return; // Don't create zero length way segments.
 
+        showStatusInfo(-1, -1, -1, snapHelper.isSnapOn());
 
         double curHdg = Utils.toDegrees(getCurrentBaseNode().getEastNorth()
Index: trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 13176)
+++ trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 13177)
@@ -73,6 +73,16 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
+import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
+import org.openstreetmap.josm.data.osm.event.DataSetListener;
+import org.openstreetmap.josm.data.osm.event.DatasetEventManager;
 import org.openstreetmap.josm.data.osm.event.DatasetEventManager.FireMode;
+import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
+import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
+import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
+import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
 import org.openstreetmap.josm.data.osm.event.SelectionEventManager;
+import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
+import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
 import org.openstreetmap.josm.data.preferences.AbstractProperty;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
@@ -111,5 +121,5 @@
  */
 public final class MapStatus extends JPanel implements
-    Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener, SelectionChangedListener, ZoomChangeListener {
+    Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener, SelectionChangedListener, DataSetListener, ZoomChangeListener {
 
     private final DecimalFormat DECIMAL_FORMAT = new DecimalFormat(Config.getPref().get("statusbar.decimal-format", "0.0"));
@@ -941,4 +951,5 @@
 
         Config.getPref().addPreferenceChangeListener(this);
+        DatasetEventManager.getInstance().addDatasetListener(this, FireMode.IN_EDT);
         SelectionEventManager.getInstance().addSelectionListener(this, FireMode.IN_EDT_CONSOLIDATED);
 
@@ -1126,4 +1137,5 @@
         NavigatableComponent.removeZoomChangeListener(this);
         Config.getPref().removePreferenceChangeListener(this);
+        DatasetEventManager.getInstance().removeDatasetListener(this);
         SelectionEventManager.getInstance().removeSelectionListener(this);
         mv.removeComponentListener(mvComponentAdapter);
@@ -1173,6 +1185,5 @@
     }
 
-    @Override
-    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
+    private void refreshDistText(Collection<? extends OsmPrimitive> newSelection) {
         if (newSelection.size() == 2) {
             Iterator<? extends OsmPrimitive> it = newSelection.iterator();
@@ -1193,4 +1204,9 @@
 
     @Override
+    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
+        refreshDistText(newSelection);
+    }
+
+    @Override
     public void zoomChanged() {
         if (!GraphicsEnvironment.isHeadless()) {
@@ -1202,3 +1218,55 @@
         }
     }
+
+    @Override
+    public void wayNodesChanged(WayNodesChangedEvent event) {
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
+        if (ds != null) {
+            Collection<OsmPrimitive> sel = ds.getSelected();
+            if (sel.size() == 1 && sel.contains(event.getChangedWay())) {
+                refreshDistText(sel);
+            }
+        }
+    }
+
+    @Override
+    public void nodeMoved(NodeMovedEvent event) {
+        DataSet ds = MainApplication.getLayerManager().getEditDataSet();
+        if (ds != null) {
+            Collection<OsmPrimitive> sel = ds.getSelected();
+            if (sel.size() == 2 && sel.contains(event.getNode())) {
+                refreshDistText(sel);
+            }
+        }
+    }
+
+    @Override
+    public void primitivesAdded(PrimitivesAddedEvent event) {
+        // Do nothing
+    }
+
+    @Override
+    public void primitivesRemoved(PrimitivesRemovedEvent event) {
+        // Do nothing
+    }
+
+    @Override
+    public void tagsChanged(TagsChangedEvent event) {
+        // Do nothing
+    }
+
+    @Override
+    public void relationMembersChanged(RelationMembersChangedEvent event) {
+        // Do nothing
+    }
+
+    @Override
+    public void otherDatasetChange(AbstractDatasetChangedEvent event) {
+        // Do nothing
+    }
+
+    @Override
+    public void dataChanged(DataChangedEvent event) {
+        // Do nothing
+    }
 }
