Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 9876)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 9877)
@@ -45,4 +45,6 @@
 import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
+import javax.swing.event.RowSorterEvent;
+import javax.swing.event.RowSorterListener;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.DefaultTableModel;
@@ -309,4 +311,8 @@
         tagTable.setRowSorter(tagRowSorter);
 
+        final RemoveHiddenSelection removeHiddenSelection = new RemoveHiddenSelection();
+        tagTable.getSelectionModel().addListSelectionListener(removeHiddenSelection);
+        tagTable.getRowSorter().addRowSorterListener(removeHiddenSelection);
+
         tagRowSorter.setComparator(0, AlphanumComparator.getInstance());
         tagRowSorter.setComparator(1, new Comparator<Object>() {
@@ -1417,3 +1423,28 @@
         }
     }
+
+    /**
+     * Clears the row selection when it is filtered away by the row sorter.
+     */
+    private class RemoveHiddenSelection implements ListSelectionListener, RowSorterListener {
+
+        void removeHiddenSelection() {
+            try {
+                tagTable.getRowSorter().convertRowIndexToModel(tagTable.getSelectedRow());
+            } catch (IndexOutOfBoundsException ignore) {
+                Main.debug("Clearing tagTable selection, {0}", ignore.toString());
+                tagTable.clearSelection();
+            }
+        }
+
+        @Override
+        public void valueChanged(ListSelectionEvent event) {
+            removeHiddenSelection();
+        }
+
+        @Override
+        public void sorterChanged(RowSorterEvent e) {
+            removeHiddenSelection();
+        }
+    }
 }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 9876)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java	(revision 9877)
@@ -668,5 +668,5 @@
                 }
                 for (int i = 0; i < tagData.getRowCount(); ++i) {
-                    if (item.getValue().equals(getDataKey(i))) {
+                    if (item.getValue().equals(tagData.getValueAt(i, 0) /* sic! do not use getDataKey*/)) {
                         if (itemToSelect == item) {
                             itemToSelect = null;
