Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 5990)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 5991)
@@ -711,6 +711,11 @@
             startEN = currentEN; // drag can continue after scaling/rotation
     
+            if (mode != Mode.rotate && mode != Mode.scale) {
+                return false;
+            }
+            
+            getCurrentDataSet().beginUpdate();
+            
             if (mode == Mode.rotate) {
-                getCurrentDataSet().beginUpdate();
                 if (c instanceof RotateCommand && affectedNodes.equals(((RotateCommand) c).getTransformedNodes())) {
                     ((RotateCommand) c).handleEvent(currentEN);
@@ -719,5 +724,4 @@
                 }
             } else if (mode == Mode.scale) {
-                getCurrentDataSet().beginUpdate();
                 if (c instanceof ScaleCommand && affectedNodes.equals(((ScaleCommand) c).getTransformedNodes())) {
                     ((ScaleCommand) c).handleEvent(currentEN);
@@ -725,10 +729,24 @@
                     Main.main.undoRedo.add(new ScaleCommand(selection, currentEN));
                 }
-            } else {
-                return false;
+            }
+            
+            Collection<Way> ways = getCurrentDataSet().getSelectedWays();
+            if (doesImpactStatusLine(affectedNodes, ways)) {
+                Main.map.statusLine.setDist(ways);
             }
         }
         getCurrentDataSet().endUpdate();
         return true;
+    }
+    
+    private boolean doesImpactStatusLine(Collection<Node> affectedNodes, Collection<Way> selectedWays) {
+        for (Way w : selectedWays) {
+            for (Node n : w.getNodes()) {
+                if (affectedNodes.contains(n)) {
+                    return true;
+                }
+            }
+        }
+        return false;
     }
     
Index: trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 5990)
+++ trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 5991)
@@ -31,5 +31,4 @@
 import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
-import javax.swing.JButton;
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JLabel;
@@ -50,4 +49,5 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.help.Helpful;
 import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
@@ -835,7 +835,29 @@
         headingText.setText(h < 0 ? "--" : Math.round(h*10)/10.0 + " \u00B0");
     }
+    /**
+     * Sets the distance text to the given value
+     * @param dist The distance value to display, in meters
+     */
     public void setDist(double dist) {
         distText.setText(dist < 0 ? "--" : NavigatableComponent.getDistText(dist));
     }
+    /**
+     * Sets the distance text to the total sum of given ways length
+     * @param ways The ways to consider for the total distance
+     * @since 5991
+     */
+    public void setDist(Collection<Way> ways) {
+        double dist = -1;
+        // Compute total length of selected way(s) until an arbitrary limit set to 250 ways
+        // in order to prevent performance issue if a large number of ways are selected (old behaviour kept in that case, see #8403)
+        int maxWays = Math.max(1, Main.pref.getInteger("selection.max-ways-for-statusline", 250));
+        if (!ways.isEmpty() && ways.size() <= maxWays) {
+            dist = 0.0;
+            for (Way w : ways) {
+                dist += w.getLength();
+            }
+        }
+        setDist(dist);
+    }
     public void activateAnglePanel(boolean activeFlag) {
         angleText.setBackground(activeFlag ? ImageLabel.backColorActive : ImageLabel.backColor);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 5990)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 5991)
@@ -530,16 +530,5 @@
                     if (selection != null) {
                         remember(selection);
-                        double dist = -1;
-                        SubclassFilteredCollection<OsmPrimitive, Way> ways = new SubclassFilteredCollection<OsmPrimitive, Way>(selection, OsmPrimitive.wayPredicate);
-                        // Compute total length of selected way(s) until an arbitrary limit set to 250 ways
-                        // in order to prevent performance issue if a large number of ways are selected (old behaviour kept in that case, see #8403)
-                        int maxWays = Math.max(1, Main.pref.getInteger("selection.max-ways-for-statusline", 250));
-                        if (!ways.isEmpty() && ways.size() <= maxWays) {
-                            dist = 0.0;
-                            for (Way w : ways) {
-                                dist += w.getLength();
-                            }
-                        }
-                        Main.map.statusLine.setDist(dist);
+                        Main.map.statusLine.setDist(new SubclassFilteredCollection<OsmPrimitive, Way>(selection, OsmPrimitive.wayPredicate));
                     }
                 }
