Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java	(revision 18836)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DeleteLayerAction.java	(revision 18837)
@@ -6,5 +6,7 @@
 import java.awt.Component;
 import java.awt.event.ActionEvent;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.swing.AbstractAction;
@@ -46,4 +48,6 @@
         if (!SaveLayersDialog.saveUnsavedModifications(selectedLayers, SaveLayersDialog.Reason.DELETE))
             return;
+        final Map<Integer, Layer> layerMap = model.selectedIndices().filter(i -> model.getLayer(i) != null)
+                .collect(HashMap::new, (map, value) -> map.put(value, model.getLayer(value)), HashMap::putAll);
         for (Layer l: selectedLayers) {
             if (model.getLayerManager().containsLayer(l)) {
@@ -51,4 +55,29 @@
                 // this is why we need to check if every layer is still in the list of selected layers.
                 model.getLayerManager().removeLayer(l);
+            }
+        }
+        // Set the next active layer to the next visible layer
+        if (layerMap.size() == 1) {
+            final int selected = Math.min(layerMap.keySet().iterator().next(), model.getRowCount() - 1);
+            int currentLayerIndex = selected;
+            Layer layer = model.getLayer(currentLayerIndex);
+            // If the user has the last layer selected, we need to wrap around.
+            boolean reversed = false;
+            while (layer != null && !layer.isVisible() && currentLayerIndex < model.getRowCount() && currentLayerIndex >= 0) {
+                if (reversed) {
+                    currentLayerIndex--;
+                } else {
+                    currentLayerIndex++;
+                }
+                if (currentLayerIndex == model.getRowCount()) {
+                    reversed = true;
+                    currentLayerIndex = selected;
+                }
+                layer = model.getLayer(currentLayerIndex);
+            }
+            if (layer != null) {
+                model.getLayerManager().setActiveLayer(layer);
+                // Reset the selection
+                model.getSelectionModel().setSelectionInterval(selected, selected);
             }
         }
