Index: trunk/src/org/openstreetmap/josm/actions/ZoomToAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ZoomToAction.java	(revision 5300)
+++ trunk/src/org/openstreetmap/josm/actions/ZoomToAction.java	(revision 5301)
@@ -10,5 +10,5 @@
 
 import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.data.osm.PrimitiveId;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
 import org.openstreetmap.josm.gui.conflict.pair.nodes.NodeListTable;
@@ -67,6 +67,6 @@
             return;
         int row = rows[0];
-        PrimitiveId primitive = this.table.getOsmPrimitivesTableModel().getReferredPrimitive(row);
         OsmDataLayer layer = this.table.getLayer();
+        OsmPrimitive primitive = this.table.getPrimitiveToZoomTo(row, layer);
         if (layer != null && primitive != null) {
             layer.data.setSelected(primitive);
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java	(revision 5300)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/ListMergeModel.java	(revision 5301)
@@ -126,9 +126,9 @@
      * @return Primitive from my dataset referenced by entry
      */
-    protected OsmPrimitive getMyPrimitive(T entry) {
-        return getMyPrimitiveDefault(entry);
+    public OsmPrimitive getMyPrimitive(T entry) {
+        return getMyPrimitiveById(entry);
     }
     
-    protected final OsmPrimitive getMyPrimitiveDefault(PrimitiveId entry) {
+    public final OsmPrimitive getMyPrimitiveById(PrimitiveId entry) {
         OsmPrimitive result = myDataset.getPrimitiveById(entry);
         if (result == null && mergedMap != null) {
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java	(revision 5301)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/PairTable.java	(revision 5301)
@@ -0,0 +1,33 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.conflict.pair;
+
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
+import javax.swing.table.TableColumnModel;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.PrimitiveId;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
+import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel;
+
+public abstract class PairTable extends OsmPrimitivesTable {
+
+    private final ListMergeModel<? extends PrimitiveId> model;
+    
+    public PairTable(String name, ListMergeModel<? extends PrimitiveId> model, OsmPrimitivesTableModel dm, TableColumnModel cm, ListSelectionModel sm) {
+        super(dm, cm, sm);
+        this.model = model;
+        setName(name);
+        setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
+    }
+
+    @Override
+    public OsmPrimitive getPrimitiveToZoomTo(int row, OsmDataLayer layer) {
+        OsmPrimitive result = super.getPrimitiveToZoomTo(row, layer);
+        if (model != null && result != null && layer != null && result.getDataSet() != layer.data) {
+            result = model.getMyPrimitiveById(result);
+        }
+        return result;
+    }
+}
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMerger.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMerger.java	(revision 5300)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListMerger.java	(revision 5301)
@@ -28,4 +28,5 @@
         myEntriesTable  = new NodeListTable(
                 "table.mynodes",
+                model,
                 model.getMyTableModel(),
                 model.getMySelectionModel()
@@ -38,4 +39,5 @@
         mergedEntriesTable  = new NodeListTable(
                 "table.mergednodes",
+                model,
                 model.getMergedTableModel(),
                 model.getMergedSelectionModel()
@@ -48,4 +50,5 @@
         theirEntriesTable  = new NodeListTable(
                 "table.theirnodes",
+                model,
                 model.getTheirTableModel(),
                 model.getTheirSelectionModel()
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTable.java	(revision 5300)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/nodes/NodeListTable.java	(revision 5301)
@@ -2,17 +2,16 @@
 package org.openstreetmap.josm.gui.conflict.pair.nodes;
 
-import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
 
 import org.openstreetmap.josm.actions.ZoomToAction;
-import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.gui.conflict.pair.ListMergeModel;
+import org.openstreetmap.josm.gui.conflict.pair.PairTable;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel;
 
-public class NodeListTable extends OsmPrimitivesTable {
+public class NodeListTable extends PairTable {
 
-    public NodeListTable(String name, OsmPrimitivesTableModel dm, ListSelectionModel sm) {
-        super(dm, new NodeListColumnModel(new NodeListTableCellRenderer()), sm);
-        setName(name);
-        setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
+    public NodeListTable(String name, ListMergeModel<Node> model, OsmPrimitivesTableModel dm, ListSelectionModel sm) {
+        super(name, model, dm, new NodeListColumnModel(new NodeListTableCellRenderer()), sm);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberListMergeModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberListMergeModel.java	(revision 5300)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberListMergeModel.java	(revision 5301)
@@ -92,6 +92,6 @@
 
     @Override
-    protected OsmPrimitive getMyPrimitive(RelationMember entry) {
-        return getMyPrimitiveDefault(entry.getMember());
+    public OsmPrimitive getMyPrimitive(RelationMember entry) {
+        return getMyPrimitiveById(entry.getMember());
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberMerger.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberMerger.java	(revision 5300)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberMerger.java	(revision 5301)
@@ -19,4 +19,5 @@
         myEntriesTable  = new RelationMemberTable(
                 "table.mymembers",
+                model,
                 model.getMyTableModel(),
                 model.getMySelectionModel()
@@ -29,4 +30,5 @@
         mergedEntriesTable  = new RelationMemberTable(
                 "table.mergedmembers",
+                model,
                 model.getMergedTableModel(),
                 model.getMergedSelectionModel()
@@ -40,4 +42,5 @@
         theirEntriesTable  = new RelationMemberTable(
                 "table.theirmembers",
+                model,
                 model.getTheirTableModel(),
                 model.getTheirSelectionModel()
Index: trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTable.java	(revision 5300)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/pair/relation/RelationMemberTable.java	(revision 5301)
@@ -1,17 +1,17 @@
+// License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.gui.conflict.pair.relation;
 
-import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
 
 import org.openstreetmap.josm.actions.ZoomToAction;
-import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
+import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.gui.conflict.pair.ListMergeModel;
+import org.openstreetmap.josm.gui.conflict.pair.PairTable;
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTableModel;
 
-public class RelationMemberTable extends OsmPrimitivesTable {
+public class RelationMemberTable extends PairTable {
 
-    public RelationMemberTable(String name, OsmPrimitivesTableModel dm, ListSelectionModel sm) {
-        super(dm, new RelationMemberListColumnModel(), sm);
-        setName(name);
-        setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
+    public RelationMemberTable(String name, ListMergeModel<RelationMember> model, OsmPrimitivesTableModel dm, ListSelectionModel sm) {
+        super(name, model, dm, new RelationMemberListColumnModel(), sm);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java	(revision 5300)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/OsmPrimitivesTable.java	(revision 5301)
@@ -71,4 +71,8 @@
         MapView.removeLayerChangeListener(zoomToAction);
     }
+    
+    public OsmPrimitive getPrimitiveToZoomTo(int row, OsmDataLayer layer) {
+        return getOsmPrimitivesTableModel().getReferredPrimitive(row);
+    }
 
     protected class PopupListener extends MouseAdapter {
