Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 1951)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 1952)
@@ -218,4 +218,28 @@
 
     /**
+     * Determines the next active data layer according to the following
+     * rules:
+     * <ul>
+     *   <li>if there is at least one {@see OsmDataLayer} the first one
+     *     becomes active</li>
+     *   <li>otherwise, the top most layer of any type becomes active</li>
+     * </ul>
+     * 
+     * @return the next active data layer
+     */
+    protected Layer determineNextActiveLayer() {
+        if (layers.isEmpty()) return null;
+        // if possible, activate the first data layer
+        //
+        List<OsmDataLayer> dataLayers = getLayersOfType(OsmDataLayer.class);
+        if (!dataLayers.isEmpty())
+            return dataLayers.get(0);
+
+        // else the first layer of any type
+        //
+        return layers.get(0);
+    }
+
+    /**
      * Remove the layer from the mapview. If the layer was in the list before,
      * an LayerChange event is fired.
@@ -237,10 +261,9 @@
         layer.destroy();
         AudioPlayer.reset();
-        if (layer instanceof OsmDataLayer && deletedLayerWasActiveLayer) {
-            for (Layer l : layers) {
-                if (l instanceof OsmDataLayer) {
-                    activeLayer = l;
-                    fireActiveLayerChanged(null, activeLayer);
-                }
+        if (deletedLayerWasActiveLayer) {
+            Layer l = determineNextActiveLayer();
+            if (l != null) {
+                activeLayer = l;
+                fireActiveLayerChanged(null, l);
             }
         }
