Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 17422)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 17423)
@@ -6,4 +6,5 @@
 
 import java.awt.BorderLayout;
+import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
@@ -170,4 +171,7 @@
     private final ArrayList<FlavorListener> clipboardListeners = new ArrayList<>();
 
+    private Component selectedTabPane;
+    private JTabbedPane tabbedPane;
+
     /**
      * Creates a new relation editor for the given relation. The relation will be saved if the user
@@ -236,9 +240,10 @@
 
         getContentPane().setLayout(new BorderLayout());
-        JTabbedPane tabbedPane = new JTabbedPane();
+        tabbedPane = new JTabbedPane();
         tabbedPane.add(tr("Tags and Members"), pnl);
         referrerBrowser = new ReferringRelationsBrowser(getLayer(), referrerModel);
         tabbedPane.add(tr("Parent Relations"), referrerBrowser);
         tabbedPane.add(tr("Child Relations"), new ChildRelationBrowser(getLayer(), relation));
+        selectedTabPane = tabbedPane.getSelectedComponent();
         tabbedPane.addChangeListener(e -> {
             JTabbedPane sourceTabbedPane = (JTabbedPane) e.getSource();
@@ -248,4 +253,12 @@
                 referrerBrowser.init();
             }
+            // see #20228
+            boolean selIsTagsAndMembers = sourceTabbedPane.getSelectedComponent() == pnl;
+            if (selectedTabPane == pnl && !selIsTagsAndMembers) {
+                unregisterMain();
+            } else if (selectedTabPane != pnl && selIsTagsAndMembers) {
+                registerMain();
+            }
+            selectedTabPane = sourceTabbedPane.getSelectedComponent();
         });
 
@@ -313,4 +326,16 @@
         HelpUtil.setHelpContext(getRootPane(), ht("/Dialog/RelationEditor"));
         UndoRedoHandler.getInstance().addCommandQueueListener(this);
+    }
+
+    private void registerMain() {
+        selectionTableModel.register();
+        memberTableModel.register();
+        memberTable.registerListeners();
+    }
+
+    private void unregisterMain() {
+        selectionTableModel.unregister();
+        memberTableModel.unregister();
+        memberTable.unregisterListeners();
     }
 
@@ -733,7 +758,7 @@
             //
             memberTable.stopHighlighting();
-            selectionTableModel.unregister();
-            memberTableModel.unregister();
-            memberTable.unregisterListeners();
+            if (tabbedPane != null && tr("Tags and Members").equals(tabbedPane.getTitleAt(tabbedPane.getSelectedIndex()))) {
+                unregisterMain();
+            }
             if (windowMenuItem != null) {
                 MainApplication.getMenu().windowMenu.remove(windowMenuItem);
@@ -841,4 +866,5 @@
         UndoRedoHandler.getInstance().removeCommandQueueListener(this);
         setRelation(null);
+        selectedTabPane = null;
         super.dispose();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 17422)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 17423)
@@ -134,5 +134,5 @@
         // just trigger a repaint - the display name of the relation members may have changed
         Collection<RelationMember> sel = getSelectedMembers();
-        GuiHelper.runInEDTAndWait(this::fireTableDataChanged);
+        GuiHelper.runInEDT(this::fireTableDataChanged);
         setSelectedMembers(sel);
     }
