Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 10392)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 10394)
@@ -570,8 +570,12 @@
             @Override
             public void layerAdded(LayerAddEvent e) {
+                Layer layer = e.getAddedLayer();
                 if (map == null) {
-                    Layer layer = e.getAddedLayer();
-                    ProjectionBounds viewProjectionBounds = layer.getViewProjectionBounds();
-                    Main.main.createMapFrame(layer, viewProjectionBounds == null ? null : new ViewportData(viewProjectionBounds));
+                    Main.main.createMapFrame(layer, null);
+                    Main.map.setVisible(true);
+                }
+                ProjectionBounds viewProjectionBounds = layer.getViewProjectionBounds();
+                if (viewProjectionBounds != null) {
+                    Main.map.mapView.scheduleZoomTo(new ViewportData(viewProjectionBounds));
                 }
             }
@@ -820,8 +824,6 @@
     public final synchronized void addLayer(final Layer layer, ViewportData viewport) {
         getLayerManager().addLayer(layer);
-        if (map != null) {
-            Main.map.setVisible(true);
-        } else if (viewport != null) {
-            Main.map.mapView.zoomTo(viewport);
+        if (viewport != null) {
+            Main.map.mapView.scheduleZoomTo(viewport);
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10392)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10394)
@@ -1291,3 +1291,13 @@
         return layerManager;
     }
+
+    /**
+     * Schedule a zoom to the given position on the next redraw.
+     * Temporary, may be removed without warning.
+     * @param viewportData
+     * @since xxx
+     */
+    public void scheduleZoomTo(ViewportData viewportData) {
+        initialViewport = viewportData;
+    }
 }
