Index: trunk/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java	(revision 17682)
+++ trunk/src/org/openstreetmap/josm/gui/history/CoordinateInfoViewer.java	(revision 17684)
@@ -7,10 +7,13 @@
 import java.awt.GridBagLayout;
 import java.awt.Insets;
+import java.awt.event.ActionEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 
+import javax.swing.AbstractAction;
 import javax.swing.BorderFactory;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
 import javax.swing.UIManager;
 import javax.swing.event.ChangeEvent;
@@ -19,6 +22,10 @@
 import org.openstreetmap.gui.jmapviewer.JMapViewer;
 import org.openstreetmap.gui.jmapviewer.MapMarkerDot;
+import org.openstreetmap.josm.command.MoveCommand;
+import org.openstreetmap.josm.data.UndoRedoHandler;
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.coor.conversion.DecimalDegreesCoordinateFormat;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.history.HistoryNode;
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
@@ -30,4 +37,5 @@
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.Destroyable;
+import org.openstreetmap.josm.tools.ImageProvider;
 import org.openstreetmap.josm.tools.Pair;
 
@@ -114,4 +122,9 @@
         add(mapViewer, gc);
         mapViewer.setZoomControlsVisible(false);
+
+        JPopupMenu popupMenu = new JPopupMenu();
+        popupMenu.add(new RestoreCoordinateAction());
+        setComponentPopupMenu(popupMenu);
+        mapViewer.setComponentPopupMenu(popupMenu);
     }
 
@@ -424,3 +437,25 @@
         }
     }
+
+    private class RestoreCoordinateAction extends AbstractAction {
+
+        RestoreCoordinateAction() {
+            super(tr("Restore"));
+            new ImageProvider("undo").getResource().attachImageIcon(this, true);
+        }
+
+        @Override
+        public void actionPerformed(ActionEvent e) {
+            OsmPrimitive primitive = getPrimitiveFromDataSet(PointInTimeType.REFERENCE_POINT_IN_TIME);
+            if (!(primitive instanceof Node)) {
+                return;
+            }
+            HistoryOsmPrimitive historyPrimitive = model.getPointInTime(PointInTimeType.REFERENCE_POINT_IN_TIME);
+            if (!(historyPrimitive instanceof HistoryNode) || ((HistoryNode) historyPrimitive).getCoords() == null) {
+                return;
+            }
+            MoveCommand command = new MoveCommand(((Node) primitive), ((HistoryNode) historyPrimitive).getCoords());
+            UndoRedoHandler.getInstance().add(command);
+        }
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserPanel.java	(revision 17682)
+++ trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserPanel.java	(revision 17684)
@@ -10,4 +10,8 @@
 
 import org.openstreetmap.josm.actions.JosmAction;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.PrimitiveId;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.tools.Destroyable;
 
@@ -64,4 +68,13 @@
     }
 
+    protected OsmPrimitive getPrimitiveFromDataSet(PointInTimeType pointInTime) {
+        DataSet dataSet = MainApplication.getLayerManager().getEditDataSet();
+        PrimitiveId primitiveId = model.getPointInTime(pointInTime);
+        if (dataSet == null || primitiveId == null) {
+            return null;
+        }
+        return dataSet.getPrimitiveById(primitiveId.getUniqueId(), primitiveId.getType());
+    }
+
     protected final <T extends AbstractAction> T trackJosmAction(T action) {
         if (action instanceof JosmAction) {
Index: trunk/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java	(revision 17682)
+++ trunk/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java	(revision 17684)
@@ -15,9 +15,6 @@
 
 import org.openstreetmap.josm.actions.RestorePropertyAction;
-import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.osm.Tagged;
-import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.properties.CopyAllKeyValueAction;
 import org.openstreetmap.josm.gui.dialogs.properties.CopyKeyValueAction;
@@ -83,12 +80,5 @@
         };
         Supplier<Collection<? extends Tagged>> objectSp = () -> Collections.singletonList(model.getPointInTime(pointInTime));
-        Supplier<OsmPrimitive> primitiveSupplier = () -> {
-            DataSet dataSet = MainApplication.getLayerManager().getEditDataSet();
-            PrimitiveId primitiveId = model.getPointInTime(pointInTime);
-            if (dataSet == null || primitiveId == null) {
-                return null;
-            }
-            return dataSet.getPrimitiveById(primitiveId.getUniqueId(), primitiveId.getType());
-        };
+        Supplier<OsmPrimitive> primitiveSupplier = () -> getPrimitiveFromDataSet(pointInTime);
 
         tagMenu.add(trackJosmAction(new CopyValueAction(table, tagKeyFn, objectSp)));
