Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 16215)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 16216)
@@ -272,5 +272,4 @@
                 model.getSelectionModel()
         );
-        tblChangesets.setAutoCreateRowSorter(true);
         tblChangesets.addMouseListener(new MouseEventHandler());
         InputMapUtils.addEnterAction(tblChangesets, new ShowDetailAction(model));
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 16215)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 16216)
@@ -70,5 +70,5 @@
  */
 public class ChangesetContentPanel extends JPanel implements PropertyChangeListener, ChangesetAware {
-
+    private JTable tblContent;
     private ChangesetContentTableModel model;
     private transient Changeset currentChangeset;
@@ -122,5 +122,5 @@
     protected JPanel buildContentPanel() {
         JPanel pnl = new JPanel(new BorderLayout());
-        JTable tblContent = new JTable(
+        tblContent = new JTable(
                 model,
                 new ChangesetContentTableColumnModel(),
@@ -212,4 +212,8 @@
                 title, JOptionPane.WARNING_MESSAGE, helpTopic
         );
+    }
+
+    private Set<HistoryOsmPrimitive> getSelectedPrimitives() {
+      return model.getSelectedPrimitives(tblContent);
     }
 
@@ -288,5 +292,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            Set<HistoryOsmPrimitive> selected = model.getSelectedPrimitives();
+            Set<HistoryOsmPrimitive> selected = getSelectedPrimitives();
             if (selected.isEmpty()) return;
             showHistory(selected);
@@ -310,5 +314,5 @@
         @Override
         public void actionPerformed(ActionEvent e) {
-            final List<PrimitiveId> primitiveIds = model.getSelectedPrimitives().stream().map(HistoryOsmPrimitive::getPrimitiveId)
+            final List<PrimitiveId> primitiveIds = getSelectedPrimitives().stream().map(HistoryOsmPrimitive::getPrimitiveId)
                     .collect(Collectors.toList());
             MainApplication.worker.submit(new DownloadPrimitivesWithReferrersTask(false, primitiveIds, true, true, null, null));
@@ -330,5 +334,5 @@
             DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
             if (isEnabled() && ds != null) {
-                return model.getSelectedPrimitives().stream()
+                return getSelectedPrimitives().stream()
                         .map(p -> ds.getPrimitiveById(p.getPrimitiveId())).filter(Objects::nonNull).collect(Collectors.toSet());
             }
@@ -364,5 +368,5 @@
             final Set<OsmPrimitive> target = getTarget();
             if (target.isEmpty()) {
-                alertNoPrimitivesTo(model.getSelectedPrimitives(), tr("Nothing to select"),
+                alertNoPrimitivesTo(getSelectedPrimitives(), tr("Nothing to select"),
                         HelpUtil.ht("/Dialog/ChangesetCacheManager#NothingToSelectInLayer"));
                 return;
@@ -385,5 +389,5 @@
             final Set<OsmPrimitive> target = getTarget();
             if (target.isEmpty()) {
-                alertNoPrimitivesTo(model.getSelectedPrimitives(), tr("Nothing to zoom to"),
+                alertNoPrimitivesTo(getSelectedPrimitives(), tr("Nothing to zoom to"),
                         HelpUtil.ht("/Dialog/ChangesetCacheManager#NothingToZoomTo"));
                 return;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java	(revision 16215)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java	(revision 16216)
@@ -9,4 +9,5 @@
 
 import javax.swing.DefaultListSelectionModel;
+import javax.swing.JTable;
 import javax.swing.table.AbstractTableModel;
 
@@ -60,12 +61,12 @@
     /**
      * Returns the selected history primitives.
+     * @param table the JTable used with this model
      * @return the selected history primitives
      */
-    public Set<HistoryOsmPrimitive> getSelectedPrimitives() {
+    public Set<HistoryOsmPrimitive> getSelectedPrimitives(JTable table) {
         Set<HistoryOsmPrimitive> ret = new HashSet<>();
-        for (int i = 0; i < data.size(); i++) {
-            if (selectionModel.isSelectedIndex(i)) {
-                ret.add(data.get(i).getPrimitive());
-            }
+        int[] selection = table.getSelectedRows();
+        for (int i = 0; i < selection.length; i++) {
+            ret.add(data.get(table.convertRowIndexToModel(selection[i])).getPrimitive());
         }
         return ret;
