Index: trunk/src/org/openstreetmap/josm/data/ImageData.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/ImageData.java	(revision 15351)
+++ trunk/src/org/openstreetmap/josm/data/ImageData.java	(revision 15352)
@@ -247,12 +247,27 @@
      */
     public void removeSelectedImage() {
-        List<ImageEntry> selected = getSelectedImages();
-        if (selected.size() > 1) {
+        List<ImageEntry> selectedImages = getSelectedImages();
+        if (selectedImages.size() > 1) {
             throw new IllegalStateException(tr("Multiple images have been selected"));
         }
-        if (selected.isEmpty()) {
+        removeImages(selectedImages);
+    }
+
+    /**
+     * Remove the current selected image from the list
+     * @since 15348
+     */
+    public void removeSelectedImages() {
+        List<ImageEntry> selectedImages = getSelectedImages();
+        removeImages(selectedImages);
+    }
+
+    private void removeImages(List<ImageEntry> selectedImages) {
+        if (selectedImages.isEmpty()) {
             return;
         }
-        data.remove(getSelectedImages().get(0));
+        for (ImageEntry img: getSelectedImages()) {
+            data.remove(img);
+        }
         if (selectedImagesIndex.get(0) == data.size()) {
             setSelectedImageIndex(data.size() - 1);
@@ -263,19 +278,4 @@
 
     /**
-     * Remove the current selected image from the list
-     * @since 15348
-     */
-    public void removeSelectedImages() {
-        List<ImageEntry> selected = getSelectedImages();
-        if (selected.isEmpty()) {
-            return;
-        }
-        for (ImageEntry img: getSelectedImages()) {
-            data.remove(img);
-        }
-        setSelectedImageIndex(-1, true);
-    }
-
-    /**
      * Determines if the image is selected
      * @param image the {@link ImageEntry} image
Index: trunk/test/unit/org/openstreetmap/josm/data/ImageDataTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/data/ImageDataTest.java	(revision 15351)
+++ trunk/test/unit/org/openstreetmap/josm/data/ImageDataTest.java	(revision 15352)
@@ -196,4 +196,30 @@
 
     @Test
+    public void testSelectImageAfterRemove() {
+        List<ImageEntry> list = getOneImage();
+        list.add(new ImageEntry());
+
+        ImageData data = new ImageData(list);
+        data.selectFirstImage();
+        data.removeSelectedImages();
+        assertEquals(1, data.getImages().size());
+        assertEquals(1, data.getSelectedImages().size());
+        assertEquals(list.get(0), data.getSelectedImages().get(0));
+    }
+
+    @Test
+    public void testSelectImageAfterRemoveWhenTheLastIsSelected() {
+        List<ImageEntry> list = getOneImage();
+        list.add(new ImageEntry());
+
+        ImageData data = new ImageData(list);
+        data.selectLastImage();
+        data.removeSelectedImages();
+        assertEquals(1, data.getImages().size());
+        assertEquals(1, data.getSelectedImages().size());
+        assertEquals(list.get(0), data.getSelectedImages().get(0));
+    }
+
+    @Test
     public void testRemoveSelectedImageTriggerListener() {
         List<ImageEntry> list = getOneImage();
