Index: trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 17250)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java	(revision 17251)
@@ -50,7 +50,5 @@
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.ChangesetCache;
-import org.openstreetmap.josm.data.osm.ChangesetDataSet;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
-import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
 import org.openstreetmap.josm.gui.MainApplication;
@@ -71,5 +69,4 @@
 import org.openstreetmap.josm.tools.InputMapUtils;
 import org.openstreetmap.josm.tools.Logging;
-import org.openstreetmap.josm.tools.StreamUtils;
 
 /**
@@ -584,12 +581,11 @@
         public void actionPerformed(ActionEvent e) {
             if (!GraphicsEnvironment.isHeadless()) {
-                actDownloadSelectedContent.actionPerformed(e);
+                if (model.getSelectedChangesets().stream().anyMatch(cs -> !cs.hasContent() || cs.isOpen()))
+                    actDownloadSelectedContent.actionPerformed(e);
                 MainApplication.worker.submit(() -> {
                     final List<PrimitiveId> primitiveIds = model.getSelectedChangesets().stream()
                             .map(Changeset::getContent)
                             .filter(Objects::nonNull)
-                            .flatMap(content -> StreamUtils.toStream(content::iterator))
-                            .map(ChangesetDataSet.ChangesetDataSetEntry::getPrimitive)
-                            .map(HistoryOsmPrimitive::getPrimitiveId)
+                            .flatMap(content -> content.getIds().stream())
                             .distinct()
                             .collect(Collectors.toList());
