Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMergeModel.java	(revision 11365)
@@ -505,8 +505,10 @@
         }
         fireModelDataChanged();
+        mergedEntriesSelectionModel.setValueIsAdjusting(true);
         mergedEntriesSelectionModel.clearSelection();
         for (int row: rows) {
             mergedEntriesSelectionModel.addSelectionInterval(row-1, row-1);
         }
+        mergedEntriesSelectionModel.setValueIsAdjusting(false);
     }
 
@@ -531,8 +533,10 @@
         }
         fireModelDataChanged();
+        mergedEntriesSelectionModel.setValueIsAdjusting(true);
         mergedEntriesSelectionModel.clearSelection();
         for (int row: rows) {
             mergedEntriesSelectionModel.addSelectionInterval(row+1, row+1);
         }
+        mergedEntriesSelectionModel.setValueIsAdjusting(false);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/ConflictDialog.java	(revision 11365)
@@ -313,4 +313,5 @@
     @Override
     public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
+        lstConflicts.setValueIsAdjusting(true);
         lstConflicts.clearSelection();
         for (OsmPrimitive osm : newSelection) {
@@ -322,4 +323,5 @@
             }
         }
+        lstConflicts.setValueIsAdjusting(false);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 11365)
@@ -841,8 +841,10 @@
             }
             fireTableDataChanged();
+            selectionModel.setValueIsAdjusting(true);
             selectionModel.clearSelection();
             for (int row : sel) {
                 selectionModel.addSelectionInterval(row-1, row-1);
             }
+            selectionModel.setValueIsAdjusting(false);
             ensureSelectedIsVisible();
         }
@@ -874,8 +876,10 @@
             }
             fireTableDataChanged();
+            selectionModel.setValueIsAdjusting(true);
             selectionModel.clearSelection();
             for (int row : sel) {
                 selectionModel.addSelectionInterval(row+1, row+1);
             }
+            selectionModel.setValueIsAdjusting(false);
             ensureSelectedIsVisible();
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java	(revision 11365)
@@ -351,8 +351,10 @@
             int[] pos = tblStyles.getSelectedRows();
             MapPaintStyles.toggleStyleActive(pos);
+            selectionModel.setValueIsAdjusting(true);
             selectionModel.clearSelection();
             for (int p: pos) {
                 selectionModel.addSelectionInterval(p, p);
             }
+            selectionModel.setValueIsAdjusting(false);
         }
     }
@@ -387,8 +389,10 @@
             MapPaintStyles.moveStyles(sel, increment);
 
+            selectionModel.setValueIsAdjusting(true);
             selectionModel.clearSelection();
             for (int row: sel) {
                 selectionModel.addSelectionInterval(row + increment, row + increment);
             }
+            selectionModel.setValueIsAdjusting(false);
             model.ensureSelectedIsVisible();
         }
@@ -434,8 +438,10 @@
             MapPaintStyles.reloadStyles(rows);
             Main.worker.submit(() -> SwingUtilities.invokeLater(() -> {
+                selectionModel.setValueIsAdjusting(true);
                 selectionModel.clearSelection();
                 for (int r: rows) {
                     selectionModel.addSelectionInterval(r, r);
                 }
+                selectionModel.setValueIsAdjusting(false);
             }));
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/RelationListDialog.java	(revision 11365)
@@ -149,5 +149,7 @@
         filter = setupFilter();
 
-        displaylist.addListSelectionListener(e -> updateActionsRelationLists());
+        displaylist.addListSelectionListener(e -> {
+            if (!e.getValueIsAdjusting()) updateActionsRelationLists();
+        });
 
         // Setup popup menu handler
@@ -563,16 +565,18 @@
          */
         public void setSelectedRelations(Collection<Relation> sel) {
+            selectionModel.setValueIsAdjusting(true);
             selectionModel.clearSelection();
-            if (sel == null || sel.isEmpty())
-                return;
-            if (!getVisibleRelations().containsAll(sel)) {
-                resetFilter();
-            }
-            for (Relation r: sel) {
-                Integer i = getVisibleRelationIndex(r);
-                if (i != null) {
-                    selectionModel.addSelectionInterval(i, i);
-                }
-            }
+            if (sel != null && !sel.isEmpty()) {
+                if (!getVisibleRelations().containsAll(sel)) {
+                    resetFilter();
+                }
+                for (Relation r: sel) {
+                    Integer i = getVisibleRelationIndex(r);
+                    if (i != null) {
+                        selectionModel.addSelectionInterval(i, i);
+                    }
+                }
+            }
+            selectionModel.setValueIsAdjusting(false);
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/SelectionListDialog.java	(revision 11365)
@@ -578,12 +578,15 @@
          */
         public synchronized void setSelected(Collection<OsmPrimitive> sel) {
+            selectionModel.setValueIsAdjusting(true);
             selectionModel.clearSelection();
-            if (sel == null) return;
-            for (OsmPrimitive p: sel) {
-                int i = selection.indexOf(p);
-                if (i >= 0) {
-                    selectionModel.addSelectionInterval(i, i);
-                }
-            }
+            if (sel != null) {
+                for (OsmPrimitive p: sel) {
+                    int i = selection.indexOf(p);
+                    if (i >= 0) {
+                        selectionModel.addSelectionInterval(i, i);
+                    }
+                }
+            }
+            selectionModel.setValueIsAdjusting(false);
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManagerModel.java	(revision 11365)
@@ -104,13 +104,15 @@
      */
     public void setSelectedChangesets(Collection<Changeset> selected) {
-        GuiHelper.runInEDTAndWait(selectionModel::clearSelection);
-        if (selected == null || selected.isEmpty())
-            return;
-        for (Changeset cs: selected) {
-            final int idx = data.indexOf(cs);
-            if (idx >= 0) {
-                GuiHelper.runInEDTAndWait(() -> selectionModel.addSelectionInterval(idx, idx));
+        selectionModel.setValueIsAdjusting(true);
+        selectionModel.clearSelection();
+        if (selected != null) {
+            for (Changeset cs: selected) {
+                final int idx = data.indexOf(cs);
+                if (idx >= 0) {
+                    selectionModel.addSelectionInterval(idx, idx);
+                }
             }
         }
+        GuiHelper.runInEDTAndWait(() -> selectionModel.setValueIsAdjusting(false));
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetListModel.java	(revision 11365)
@@ -50,13 +50,15 @@
 
     public void setSelectedChangesets(Collection<Changeset> changesets) {
+        selectionModel.setValueIsAdjusting(true);
         selectionModel.clearSelection();
-        if (changesets == null) return;
-        for (Changeset cs: changesets) {
-            int idx = data.indexOf(cs);
-            if (idx < 0) {
-                continue;
-            }
-            selectionModel.addSelectionInterval(idx, idx);
-        }
+        if (changesets != null) {
+            for (Changeset cs: changesets) {
+                int idx = data.indexOf(cs);
+                if (idx >= 0) {
+                    selectionModel.addSelectionInterval(idx, idx);
+                }
+            }
+        }
+        selectionModel.setValueIsAdjusting(false);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 11365)
@@ -192,4 +192,5 @@
         }
         ListSelectionModel s = table.getSelectionModel();
+        s.setValueIsAdjusting(true);
         s.clearSelection();
         for (int i = 0; i < layer.trackVisibility.length; i++) {
@@ -198,4 +199,5 @@
             }
         }
+        s.setValueIsAdjusting(false);
     }
 
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 11364)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 11365)
@@ -665,4 +665,5 @@
             }
             fireTableDataChanged();
+            selectionModel.setValueIsAdjusting(true);
             selectionModel.clearSelection();
             for (ExtendedSourceEntry info: sources) {
@@ -672,4 +673,5 @@
                 }
             }
+            selectionModel.setValueIsAdjusting(false);
         }
 
@@ -699,8 +701,10 @@
                 data.set(row + i, t1);
             }
+            selectionModel.setValueIsAdjusting(true);
             selectionModel.clearSelection();
             for (int row: sel) {
                 selectionModel.addSelectionInterval(row + i, row + i);
             }
+            selectionModel.setValueIsAdjusting(false);
         }
     }
