Index: /trunk/src/org/openstreetmap/josm/data/ImageData.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/ImageData.java	(revision 18048)
+++ /trunk/src/org/openstreetmap/josm/data/ImageData.java	(revision 18049)
@@ -1,6 +1,4 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.data;
-
-import static org.openstreetmap.josm.tools.I18n.tr;
 
 import java.util.ArrayList;
@@ -267,20 +265,8 @@
     /**
      * Remove the current selected image from the list
-     */
-    public void removeSelectedImage() {
-        List<ImageEntry> selectedImages = getSelectedImages();
-        if (selectedImages.size() > 1) {
-            throw new IllegalStateException(tr("Multiple images have been selected"));
-        }
-        removeImages(selectedImages);
-    }
-
-    /**
-     * Remove the current selected image from the list
      * @since 15348
      */
     public void removeSelectedImages() {
-        List<ImageEntry> selectedImages = getSelectedImages();
-        removeImages(selectedImages);
+        removeImages(getSelectedImages());
     }
 
@@ -290,11 +276,20 @@
         }
         for (ImageEntry img: getSelectedImages()) {
-            data.remove(img);
-            this.geoImages.remove(img);
-        }
-        if (selectedImagesIndex.get(0) >= data.size()) {
-            setSelectedImageIndex(data.size() - 1);
+            removeImage(img, false);
+        }
+        updateSelectedImage();
+    }
+
+    /**
+     * Update the selected image after removal of one or more images.
+     * @since 18049
+     */
+    public void updateSelectedImage() {
+        int size = data.size();
+        Integer firstSelectedImageIndex = selectedImagesIndex.get(0);
+        if (firstSelectedImageIndex >= size) {
+            setSelectedImageIndex(size - 1);
         } else {
-            setSelectedImageIndex(selectedImagesIndex.get(0), true);
+            setSelectedImageIndex(firstSelectedImageIndex, true);
         }
     }
@@ -307,6 +302,5 @@
      */
     public boolean isImageSelected(ImageEntry image) {
-        int index = data.indexOf(image);
-        return selectedImagesIndex.contains(index);
+        return selectedImagesIndex.contains(data.indexOf(image));
     }
 
@@ -316,7 +310,19 @@
      */
     public void removeImage(ImageEntry img) {
+        removeImage(img, true);
+    }
+
+    /**
+     * Remove the image from the list and optionnally trigger update listener
+     * @param img the {@link ImageEntry} to remove
+     * @param fireUpdateEvent if {@code true}, notifies listeners of image update
+     * @since xxx
+     */
+    public void removeImage(ImageEntry img, boolean fireUpdateEvent) {
         data.remove(img);
         this.geoImages.remove(img);
-        notifyImageUpdate();
+        if (fireUpdateEvent) {
+            notifyImageUpdate();
+        }
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 18048)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 18049)
@@ -344,8 +344,8 @@
 
                 if (result == 2) {
-                    currentData.removeSelectedImages();
                     for (ImageEntry delete : toDelete) {
                         if (Utils.deleteFile(delete.getFile())) {
-                            Logging.info("File " + delete.getFile() + " deleted.");
+                            currentData.removeImage(delete, false);
+                            Logging.info("File {0} deleted.", delete.getFile());
                         } else {
                             JOptionPane.showMessageDialog(
@@ -357,4 +357,6 @@
                         }
                     }
+                    currentData.notifyImageUpdate();
+                    currentData.updateSelectedImage();
                 }
             }
Index: /trunk/test/unit/org/openstreetmap/josm/data/ImageDataTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/data/ImageDataTest.java	(revision 18048)
+++ /trunk/test/unit/org/openstreetmap/josm/data/ImageDataTest.java	(revision 18049)
@@ -55,5 +55,5 @@
         assertFalse(data.hasNextImage());
         assertFalse(data.hasPreviousImage());
-        data.removeSelectedImage();
+        data.removeSelectedImages();
     }
 
@@ -182,9 +182,12 @@
 
     @Test
-    void testRemoveSelectedImage() {
-        List<ImageEntry> list = getOneImage();
-        ImageData data = new ImageData(list);
-        data.selectFirstImage();
-        data.removeSelectedImage();
+    void testRemoveSelectedImages() {
+        List<ImageEntry> list = getOneImage();
+        list.add(new ImageEntry());
+
+        ImageData data = new ImageData(list);
+        data.selectFirstImage();
+        data.addImageToSelection(list.get(1));
+        data.removeSelectedImages();
         assertEquals(0, data.getImages().size());
         assertEquals(0, data.getSelectedImages().size());
@@ -192,17 +195,4 @@
 
     @Test
-    void testRemoveSelectedImages() {
-        List<ImageEntry> list = getOneImage();
-        list.add(new ImageEntry());
-
-        ImageData data = new ImageData(list);
-        data.selectFirstImage();
-        data.addImageToSelection(list.get(1));
-        data.removeSelectedImages();
-        assertEquals(0, data.getImages().size());
-        assertEquals(0, data.getSelectedImages().size());
-    }
-
-    @Test
     void testRemoveSelectedImagesWithRemainingImages() {
         List<ImageEntry> list = getOneImage();
@@ -261,5 +251,5 @@
         data.addImageDataUpdateListener(listener);
         data.selectFirstImage();
-        data.removeSelectedImage();
+        data.removeSelectedImages();
     }
 
