Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 18967)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 18968)
@@ -157,8 +157,4 @@
     private final CancelAction cancelAction;
     /**
-     * Action for performing the {@link DeleteCurrentRelationAction}
-     */
-    private final DeleteCurrentRelationAction deleteAction;
-    /**
      * A list of listeners that need to be notified on clipboard content changes.
      */
@@ -270,5 +266,5 @@
         final DuplicateRelationAction duplicateAction = new DuplicateRelationAction(actionAccess);
         // Action for performing the {@link DeleteCurrentRelationAction}
-        deleteAction = new DeleteCurrentRelationAction(actionAccess);
+        final DeleteCurrentRelationAction deleteAction = new DeleteCurrentRelationAction(actionAccess);
 
         this.memberTableModel.addTableModelListener(applyAction);
@@ -410,5 +406,4 @@
      * builds the panel with the OK and the Cancel button
      * @param okAction OK action
-     * @param deleteAction Delete action
      * @param cancelAction Cancel action
      *
@@ -1082,5 +1077,4 @@
     @Override
     public void commandChanged(int queueSize, int redoSize) {
-        deleteAction.updateEnabledState();
         Relation r = getRelation();
         if (r != null && r.getDataSet() == null) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DeleteCurrentRelationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DeleteCurrentRelationAction.java	(revision 18967)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DeleteCurrentRelationAction.java	(revision 18968)
@@ -9,5 +9,8 @@
 import org.openstreetmap.josm.actions.mapmode.DeleteAction;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
+import org.openstreetmap.josm.gui.dialogs.relation.RelationDialogManager;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -36,11 +39,18 @@
         if (toDelete == null)
             return;
+        if (toDelete.isDeleted()) {
+            // see #23447
+            OsmDataLayer layer = MainApplication.getLayerManager().getEditLayer();
+            if (layer != null) {
+                RelationDialogManager.getRelationDialogManager().close(layer, toDelete);
+            }
+            return;
+        }
         DeleteAction.deleteRelation(getLayer(), toDelete);
     }
 
     @Override
-    public void updateEnabledState() {
-        Relation r = getEditor().getRelation();
-        setEnabled(r != null && !r.isDeleted());
+    protected void updateEnabledState() {
+        setEnabled(getEditor().getRelationSnapshot() != null);
     }
 
