Index: /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 18602)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 18603)
@@ -152,4 +152,10 @@
         this.availableSourcesModel = new AvailableSourcesModel();
         this.tblAvailableSources = new ScrollHackTable(availableSourcesModel);
+        // This add/remove listener code is needed to fix #20849. Java fires table listeners in the reverse order
+        // in which they were added, and we need the model to have been updated before we call the adjustColumnWidth code.
+        // So we remove the JTable and re-add it as a listener after we add the column width adjustment
+        availableSourcesModel.addTableModelListener(e -> TableHelper.adjustColumnWidth(tblAvailableSources, 0, 800));
+        availableSourcesModel.removeTableModelListener(this.tblAvailableSources);
+        availableSourcesModel.addTableModelListener(this.tblAvailableSources);
         this.tblAvailableSources.setAutoCreateRowSorter(true);
         this.tblAvailableSources.setSelectionModel(selectionModel);
@@ -191,5 +197,4 @@
         // Force Swing to show horizontal scrollbars for the JTable
         // Yes, this is a little ugly, but should work
-        availableSourcesModel.addTableModelListener(e -> TableHelper.adjustColumnWidth(tblAvailableSources, 0, 800));
         activeSourcesModel.addTableModelListener(e -> TableHelper.adjustColumnWidth(tblActiveSources, canEnable ? 1 : 0, 800));
         activeSourcesModel.setActiveSources(getInitialSourcesList());
