Index: trunk/src/org/openstreetmap/josm/gui/MapStatus.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 13153)
+++ trunk/src/org/openstreetmap/josm/gui/MapStatus.java	(revision 13154)
@@ -14,5 +14,7 @@
 import java.awt.Font;
 import java.awt.GridBagLayout;
+import java.awt.MouseInfo;
 import java.awt.Point;
+import java.awt.PointerInfo;
 import java.awt.SystemColor;
 import java.awt.Toolkit;
@@ -76,4 +78,5 @@
 import org.openstreetmap.josm.data.preferences.DoubleProperty;
 import org.openstreetmap.josm.data.preferences.NamedColorProperty;
+import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
 import org.openstreetmap.josm.gui.help.Helpful;
 import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
@@ -107,5 +110,5 @@
  */
 public final class MapStatus extends JPanel implements
-    Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener, SelectionChangedListener {
+    Helpful, Destroyable, PreferenceChangedListener, SoMChangeListener, SelectionChangedListener, ZoomChangeListener {
 
     private final DecimalFormat DECIMAL_FORMAT = new DecimalFormat(Config.getPref().get("statusbar.decimal-format", "0.0"));
@@ -882,25 +885,7 @@
                 if (mv.getCenter() == null)
                     return;
-                // Do not update the view if ctrl is pressed.
-                if ((e.getModifiersEx() & MouseEvent.CTRL_DOWN_MASK) == 0) {
-                    ICoordinateFormat mCord = CoordinateFormatManager.getDefaultFormat();
-                    LatLon p = mv.getLatLon(e.getX(), e.getY());
-                    latText.setText(mCord.latToString(p));
-                    lonText.setText(mCord.lonToString(p));
-                    if (Objects.equals(previousCoordinateFormat, mCord)) {
-                        // do nothing
-                    } else if (ProjectedCoordinateFormat.INSTANCE.equals(mCord)) {
-                        latText.setIcon("northing");
-                        lonText.setIcon("easting");
-                        latText.setToolTipText(tr("The northing at the mouse pointer."));
-                        lonText.setToolTipText(tr("The easting at the mouse pointer."));
-                        previousCoordinateFormat = mCord;
-                    } else {
-                        latText.setIcon("lat");
-                        lonText.setIcon("lon");
-                        latText.setToolTipText(tr("The geographic latitude at the mouse pointer."));
-                        lonText.setToolTipText(tr("The geographic longitude at the mouse pointer."));
-                        previousCoordinateFormat = mCord;
-                    }
+                // Do not update the view if ctrl or right button is pressed.
+                if ((e.getModifiersEx() & (MouseEvent.CTRL_DOWN_MASK | MouseEvent.BUTTON3_DOWN_MASK)) == 0) {
+                    updateLatLonText(e.getX(), e.getY());
                 }
             }
@@ -938,4 +923,5 @@
 
         SystemOfMeasurement.addSoMChangeListener(this);
+        NavigatableComponent.addZoomChangeListener(this);
 
         latText.addMouseListener(jumpToOnLeftClick);
@@ -969,4 +955,26 @@
         thread.setDaemon(true);
         thread.start();
+    }
+
+    private void updateLatLonText(int x, int y) {
+        LatLon p = mv.getLatLon(x, y);
+        ICoordinateFormat mCord = CoordinateFormatManager.getDefaultFormat();
+        latText.setText(mCord.latToString(p));
+        lonText.setText(mCord.lonToString(p));
+        if (Objects.equals(previousCoordinateFormat, mCord)) {
+            // do nothing
+        } else if (ProjectedCoordinateFormat.INSTANCE.equals(mCord)) {
+            latText.setIcon("northing");
+            lonText.setIcon("easting");
+            latText.setToolTipText(tr("The northing at the mouse pointer."));
+            lonText.setToolTipText(tr("The easting at the mouse pointer."));
+            previousCoordinateFormat = mCord;
+        } else {
+            latText.setIcon("lat");
+            lonText.setIcon("lon");
+            latText.setToolTipText(tr("The geographic latitude at the mouse pointer."));
+            lonText.setToolTipText(tr("The geographic longitude at the mouse pointer."));
+            previousCoordinateFormat = mCord;
+        }
     }
 
@@ -1115,4 +1123,5 @@
     public void destroy() {
         SystemOfMeasurement.removeSoMChangeListener(this);
+        NavigatableComponent.removeZoomChangeListener(this);
         Config.getPref().removePreferenceChangeListener(this);
         SelectionEventManager.getInstance().removeSelectionListener(this);
@@ -1181,3 +1190,12 @@
         setDist(new SubclassFilteredCollection<OsmPrimitive, Way>(newSelection, Way.class::isInstance));
     }
+
+    @Override
+    public void zoomChanged() {
+        PointerInfo pointerInfo = MouseInfo.getPointerInfo();
+        if (pointerInfo != null) {
+            Point mp = pointerInfo.getLocation();
+            updateLatLonText(mp.x, mp.y);
+        }
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 13153)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 13154)
@@ -910,14 +910,4 @@
     }
 
-    @Override
-    protected void refreshMouse() {
-        if (lastMEvent.getWhen() > 0) {
-            // This fake movement allows to keep consistent state between mouse position and hilighted primitives, status bar, etc.
-            // When the map is not moved by mouse (for example with keyboard shortcuts)
-            dispatchEvent(new MouseEvent(this, MouseEvent.MOUSE_MOVED, System.currentTimeMillis(), 0,
-                    lastMEvent.getX(), lastMEvent.getY(), 0, false));
-        }
-    }
-
     /**
      * Returns the layer manager.
Index: trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 13153)
+++ trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 13154)
@@ -697,11 +697,6 @@
         if (!initial) {
             repaint();
-            refreshMouse();
             fireZoomChanged();
         }
-    }
-
-    protected void refreshMouse() {
-        // To be overriden by subclasses handling mouse events
     }
 
