Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 18337)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 18338)
@@ -110,4 +110,5 @@
 
     private ChangesetCacheManagerModel model;
+    private ChangesetCacheTableRowSorter sorter;
     private JSplitPane spContent;
     private boolean needsSplitPaneAdjustment;
@@ -272,5 +273,5 @@
                 model.getSelectionModel()
         );
-        tblChangesets.setRowSorter(new ChangesetCacheTableRowSorter(model));
+        tblChangesets.setRowSorter(sorter);
         tblChangesets.addMouseListener(new MouseEventHandler());
         InputMapUtils.addEnterAction(tblChangesets, new ShowDetailAction(model));
@@ -304,4 +305,6 @@
 
         model = buildModel();
+        sorter = new ChangesetCacheTableRowSorter(model);
+        model.setChangesetCacheTableRowSorter(sorter);
         actRemoveFromCacheAction = new RemoveFromCacheAction(model);
         actCloseSelectedChangesetsAction = new CloseSelectedChangesetsAction(model);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java	(revision 18337)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java	(revision 18338)
@@ -5,4 +5,5 @@
 import java.beans.PropertyChangeSupport;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Comparator;
@@ -32,4 +33,5 @@
     private final transient List<Changeset> data = new ArrayList<>();
     private final DefaultListSelectionModel selectionModel;
+    private transient ChangesetCacheTableRowSorter sorter;
     private transient Changeset changesetInDetailView;
     private final PropertyChangeSupport support = new PropertyChangeSupport(this);
@@ -88,12 +90,6 @@
      */
     public List<Changeset> getSelectedChangesets() {
-        List<Changeset> ret = new ArrayList<>();
-        for (int i = 0; i < data.size(); i++) {
-            Changeset cs = data.get(i);
-            if (selectionModel.isSelectedIndex(i)) {
-                ret.add(cs);
-            }
-        }
-        return ret;
+        return Arrays.stream(TableHelper.getSelectedIndices(selectionModel))
+                .map(sorter::convertRowIndexToModel).mapToObj(data::get).collect(Collectors.toList());
     }
 
@@ -166,4 +162,8 @@
     }
 
+    void setChangesetCacheTableRowSorter(ChangesetCacheTableRowSorter sorter) {
+        this.sorter = sorter;
+    }
+
     /* ------------------------------------------------------------------------------ */
     /* interface ChangesetCacheListener                                               */
