Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 19276)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 19279)
@@ -6,5 +6,4 @@
 
 import java.awt.BorderLayout;
-import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.FlowLayout;
@@ -162,7 +161,4 @@
     private final ArrayList<FlavorListener> clipboardListeners = new ArrayList<>();
 
-    private Component selectedTabPane;
-    private final JTabbedPane tabbedPane;
-
     /**
      * Creates a new relation editor for the given relation. The relation will be saved if the user
@@ -236,4 +232,5 @@
 
         getContentPane().setLayout(new BorderLayout());
+        final JTabbedPane tabbedPane;
         tabbedPane = new JTabbedPane();
         tabbedPane.add(tr("Tags and Members"), pnl);
@@ -241,5 +238,4 @@
         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();
@@ -249,12 +245,4 @@
                 referrerBrowser.init();
             }
-            // see #20228
-            boolean selIsTagsAndMembers = sourceTabbedPane.getSelectedComponent() == pnl;
-            if (selectedTabPane == pnl && !selIsTagsAndMembers) {
-                unregisterMain();
-            } else if (selectedTabPane != pnl && selIsTagsAndMembers) {
-                registerMain();
-            }
-            selectedTabPane = sourceTabbedPane.getSelectedComponent();
         });
 
@@ -329,16 +317,4 @@
         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();
     }
 
@@ -789,7 +765,8 @@
             //
             memberTable.stopHighlighting();
-            if (tabbedPane != null && tr("Tags and Members").equals(tabbedPane.getTitleAt(tabbedPane.getSelectedIndex()))) {
-                unregisterMain();
-            }
+            selectionTableModel.unregister();
+            memberTableModel.unregister();
+            memberTable.unregisterListeners();
+
             if (windowMenuItem != null) {
                 MainApplication.getMenu().windowMenu.remove(windowMenuItem);
@@ -898,5 +875,4 @@
         super.dispose(); // call before setting relation to null, see #20304
         setRelation(null);
-        selectedTabPane = null;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 19276)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 19279)
@@ -133,6 +133,8 @@
         // just trigger a repaint - the display name of the relation members may have changed
         Collection<RelationMember> sel = getSelectedMembers();
-        GuiHelper.runInEDT(this::fireTableDataChanged);
-        setSelectedMembers(sel);
+        GuiHelper.runInEDT(() -> {
+            fireTableDataChanged();
+            setSelectedMembers(sel);
+        });
     }
 
