Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 5734)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 5735)
@@ -12,4 +12,6 @@
 import java.awt.Toolkit;
 import java.awt.event.AWTEventListener;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
@@ -50,4 +52,5 @@
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Pair;
@@ -440,4 +443,10 @@
             selectPrims(NavigatableComponent.asColl(toSelect), false, false);
             useLastMoveCommandIfPossible();
+            // Schedule a timer to update status line "initialMoveDelay+1" ms in the future
+            GuiHelper.scheduleTimer(initialMoveDelay+1, new ActionListener() {
+                public void actionPerformed(ActionEvent evt) {
+                    updateStatusLine();
+                }
+            }, false);
             break;
         case select:
@@ -853,16 +862,17 @@
     @Override
     public String getModeHelpText() {
-        if (mode == Mode.select && mouseDownButton == MouseEvent.BUTTON1 && mouseReleaseTime < mouseDownTime)
-            return tr("Release the mouse button to select the objects in the rectangle.");
-        else if (mode == Mode.move) {
-            final boolean canMerge = getCurrentDataSet()!=null && !getCurrentDataSet().getSelectedNodes().isEmpty();
-            final String mergeHelp = canMerge ? (" " + tr("Ctrl to merge with nearest node.")) : "";
-            return tr("Release the mouse button to stop moving.") + mergeHelp;
-        } else if (mode == Mode.rotate)
-            return tr("Release the mouse button to stop rotating.");
-        else if (mode == Mode.scale)
-            return tr("Release the mouse button to stop scaling.");
-        else
-            return tr("Move objects by dragging; Shift to add to selection (Ctrl to toggle); Shift-Ctrl to rotate selected; Alt-Ctrl to scale selected; or change selection");
+        if (mouseDownButton == MouseEvent.BUTTON1 && mouseReleaseTime < mouseDownTime) {
+            if (mode == Mode.select)
+                return tr("Release the mouse button to select the objects in the rectangle.");
+            else if (mode == Mode.move && (System.currentTimeMillis() - mouseDownTime >= initialMoveDelay)) {
+                final boolean canMerge = getCurrentDataSet()!=null && !getCurrentDataSet().getSelectedNodes().isEmpty();
+                final String mergeHelp = canMerge ? (" " + tr("Ctrl to merge with nearest node.")) : "";
+                return tr("Release the mouse button to stop moving.") + mergeHelp;
+            } else if (mode == Mode.rotate)
+                return tr("Release the mouse button to stop rotating.");
+            else if (mode == Mode.scale)
+                return tr("Release the mouse button to stop scaling.");
+        }
+        return tr("Move objects by dragging; Shift to add to selection (Ctrl to toggle); Shift-Ctrl to rotate selected; Alt-Ctrl to scale selected; or change selection");
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 5734)
+++ trunk/src/org/openstreetmap/josm/gui/util/GuiHelper.java	(revision 5735)
@@ -11,4 +11,6 @@
 import java.awt.Toolkit;
 import java.awt.Window;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.event.HierarchyEvent;
 import java.awt.event.HierarchyListener;
@@ -21,4 +23,5 @@
 import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;
+import javax.swing.Timer;
 
 import org.openstreetmap.josm.Main;
@@ -138,3 +141,18 @@
         return pane;
     }
+    
+    /**
+     * Schedules a new Timer to be run in the future (once or several times).
+     * @param initialDelay milliseconds for the initial and between-event delay if repeatable
+     * @param actionListener an initial listener; can be null
+     * @param repeats specify false to make the timer stop after sending its first action event
+     * @return The (started) timer.
+     * @since 5735
+     */
+    public static final Timer scheduleTimer(int initialDelay, ActionListener actionListener, boolean repeats) {
+        Timer timer = new Timer(initialDelay, actionListener);
+        timer.setRepeats(repeats);
+        timer.start();
+        return timer;
+    }
 }
