Index: src/org/openstreetmap/josm/actions/HistoryInfoAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(revision 16499)
+++ src/org/openstreetmap/josm/actions/HistoryInfoAction.java	(working copy)
@@ -6,9 +6,11 @@
 
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.Set;
+import java.util.stream.Collectors;
 
+import javax.swing.JList;
 import javax.swing.JTable;
 
 import org.openstreetmap.josm.data.osm.OsmData;
@@ -43,9 +45,9 @@
     @Override
     public void actionPerformed(ActionEvent ae) {
         // Generic handling of tables displaying OSM primitives
+        Set<PrimitiveId> sel = new LinkedHashSet<>();
         if (ae.getSource() instanceof JTable) {
             JTable table = (JTable) ae.getSource();
-            Set<PrimitiveId> sel = new HashSet<>();
             for (int row : table.getSelectedRows()) {
                 for (int col = 0; col < table.getModel().getColumnCount(); col++) {
                     Object value = table.getModel().getValueAt(row, col);
@@ -55,11 +57,17 @@
                     }
                 }
             }
-            if (!sel.isEmpty()) {
-                HistoryBrowserDialogManager.getInstance().showHistory(sel);
-                return;
-            }
+        } else if (ae.getSource() instanceof JList) {
+            JList<?> list = (JList<?>) ae.getSource();
+            sel = list.getSelectedValuesList()
+                    .stream().filter(v -> v instanceof PrimitiveId)
+                    .map(v -> (PrimitiveId) v)
+                    .collect(Collectors.toCollection(LinkedHashSet::new));
         }
+        if (!sel.isEmpty()) {
+            HistoryBrowserDialogManager.getInstance().showHistory(sel);
+            return;
+        }
         // Otherwise show history for currently selected objects
         OsmData<?, ?, ?, ?> set = getLayerManager().getActiveData();
         if (set != null && !set.selectionEmpty()) {
Index: src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 16499)
+++ src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(working copy)
@@ -34,6 +34,7 @@
 import javax.swing.event.PopupMenuListener;
 
 import org.openstreetmap.josm.actions.ExpertToggleAction;
+import org.openstreetmap.josm.actions.HistoryInfoAction;
 import org.openstreetmap.josm.actions.relation.AddSelectionToRelations;
 import org.openstreetmap.josm.actions.relation.DeleteRelationsAction;
 import org.openstreetmap.josm.actions.relation.DuplicateRelationAction;
@@ -198,6 +199,10 @@
         displaylist.getActionMap().put("copy", MainApplication.getMenu().copy);
         displaylist.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_C, PlatformManager.getPlatform().getMenuShortcutKeyMaskEx()), "copy");
 
+        HistoryInfoAction historyAction = MainApplication.getMenu().historyinfo;
+        displaylist.getActionMap().put("historyAction", historyAction);
+        displaylist.getInputMap().put(historyAction.getShortcut().getKeyStroke(), "historyAction");
+
         updateActionsRelationLists();
     }
 
