Index: /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10404)
+++ /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 10405)
@@ -315,7 +315,11 @@
 
     protected void updateLocationState() {
-        if (SwingUtilities.getWindowAncestor(this) != null && isShowing()) {
+        if (isVisibleOnScreen()) {
             state = state.usingLocation(this);
         }
+    }
+
+    protected boolean isVisibleOnScreen() {
+        return SwingUtilities.getWindowAncestor(this) != null && isShowing();
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/gui/NavigatableComponentTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/NavigatableComponentTest.java	(revision 10404)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/NavigatableComponentTest.java	(revision 10405)
@@ -9,5 +9,5 @@
 import java.awt.geom.Point2D;
 
-import javax.swing.JFrame;
+import javax.swing.JPanel;
 
 import org.CustomMatchers;
@@ -32,4 +32,16 @@
 public class NavigatableComponentTest {
 
+    private final class NavigatableComponentMock extends NavigatableComponent {
+        @Override
+        public Point getLocationOnScreen() {
+            return new Point(30, 40);
+        }
+
+        @Override
+        protected boolean isVisibleOnScreen() {
+            return true;
+        }
+    }
+
     private static final int HEIGHT = 200;
     private static final int WIDTH = 300;
@@ -48,10 +60,5 @@
     @Before
     public void setUp() {
-        component = new NavigatableComponent() {
-            @Override
-            public Point getLocationOnScreen() {
-                return new Point(30, 40);
-            }
-        };
+        component = new NavigatableComponentMock();
         component.setBounds(new Rectangle(WIDTH, HEIGHT));
         // wait for the event to be propagated.
@@ -62,6 +69,6 @@
         });
         component.setVisible(true);
-        JFrame window = new JFrame();
-        window.add(component);
+        JPanel parent = new JPanel();
+        parent.add(component);
         component.updateLocationState();
     }
