Index: src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 19444)
+++ src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(working copy)
@@ -100,7 +100,7 @@
     private final ImageOpenExternalAction imageOpenExternalAction = new ImageOpenExternalAction();
     private final LayerVisibilityAction visibilityAction = new LayerVisibilityAction(Collections::emptyList,
             () -> Collections.singleton(imageryFilterSettings));
-
+    private final CloseOtherTabsAction closeAllTabsAction = new CloseOtherTabsAction();
     private final ImageDisplay imgDisplay = new ImageDisplay(imageryFilterSettings);
     private Future<?> imgLoadingFuture;
     private boolean centerView;
@@ -255,6 +255,7 @@
         addButtonGroup(buttons, this.btnCopyPath, this.btnOpenExternal);
         addButtonGroup(buttons, createButton(visibilityAction, buttonDim));
 
+
         JPanel bottomPane = new JPanel(new GridBagLayout());
         GridBagConstraints gc = new GridBagConstraints();
         gc.gridx = 0;
@@ -417,6 +418,7 @@
         imageRemoveFromDiskAction.destroy();
         imageZoomAction.destroy();
         toggleAction.destroy();
+        closeAllTabsAction.destroy();
         cancelLoadingImage();
         super.destroy();
         // make sure that Image Display is destroyed here, it might not be a component
@@ -607,7 +609,7 @@
             refresh(false);
         }
     }
-    
+
     private class ImageRemoveAction extends JosmAction {
         ImageRemoveAction() {
             super(null, new ImageProvider(DIALOG_FOLDER, "delete"), tr("Remove photo from layer"), Shortcut.registerShortcut(
@@ -756,6 +758,28 @@
         }
     }
 
+    private class CloseOtherTabsAction extends JosmAction {
+        CloseOtherTabsAction() {
+            super(tr("close-other-tabs"), new ImageProvider("misc", "close"), tr("Close other tabs"),
+                    Shortcut.registerShortcut("closeother", "close other tabs", KeyEvent.VK_Y, Shortcut.ALT), false, null,
+                    false);
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            for (int i = layers.getTabCount() - 1; i >= 0; i--) {
+                Component component = layers.getComponentAt(i);
+                if (component instanceof MoveImgDisplayPanel) {
+                    MoveImgDisplayPanel<?> moveImgDisplayPanel = (MoveImgDisplayPanel<?>) component;
+                    if (moveImgDisplayPanel.layer.containsImage(currentEntry))
+                        continue;
+                    layers.removeTabAt(i);
+                    layers.remove(moveImgDisplayPanel);
+                }
+            }
+        }
+    }
+
     /**
      * A tab title renderer for {@link HideableTabbedPane} that allows us to close tabs.
      */
@@ -1032,7 +1056,7 @@
             if (Config.getPref().getBoolean("geoimage.viewer.extendedinfo", false)) {
                 osd.append(tr("\nEXIF DTO time: {0}", dtf.format(entry.getExifInstant())));
             } else {
-                osd.append(tr("\nEXIF time: {0}", dtf.format(entry.getExifInstant())));        
+                osd.append(tr("\nEXIF time: {0}", dtf.format(entry.getExifInstant())));
             }
         }
 
@@ -1042,7 +1066,7 @@
             }
             if (entry.hasGpsTime()) {
                 osd.append(tr("\nCorr GPS time: {0}", dtf.format(entry.getGpsInstant())));
-            }            
+            }
             if (entry.getExifImgDir() != null) {
                 osd.append(tr("\nDirection {0}\u00b0", Math.round(entry.getExifImgDir())));
             }
@@ -1211,7 +1235,7 @@
             GuiHelper.runInEDT(this::refresh);
         }
     }
-    
+
     private void registerOnLayer(Layer layer) {
         if (layer instanceof IGeoImageLayer) {
             layer.addPropertyChangeListener(l -> {
