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();
                 }
             }
