Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 16557)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 16558)
@@ -23,4 +23,5 @@
 import org.openstreetmap.josm.data.osm.Relation;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
@@ -161,4 +162,14 @@
         if (c != null) {
             UndoRedoHandler.getInstance().add(c);
+            if (changesHiddenWay(c)) {
+                final ConfirmDeleteDialog ed = new ConfirmDeleteDialog();
+                ed.setContent(tr("Are you sure that you want to delete elements with attached ways that are hidden by filters?"));
+                ed.toggleEnable("deletedHiddenElements");
+                if (ed.showDialog().getValue() != 1) {
+                    UndoRedoHandler.getInstance().undo(1);
+                    return;
+                }
+            }
+
             //FIXME: This should not be required, DeleteCommand should update the selection, otherwise undo/redo won't work.
             lm.getEditDataSet().setSelected();
@@ -426,3 +437,18 @@
         giveUserFeedback(oldEvent, modifiers);
     }
+
+    private boolean changesHiddenWay(Command c) {
+        return c.getParticipatingPrimitives().stream().anyMatch(OsmPrimitive::isDisabledAndHidden);
+    }
+
+    static class ConfirmDeleteDialog extends ExtendedDialog {
+        ConfirmDeleteDialog() {
+            super(MainApplication.getMainFrame(),
+                    tr("Delete elements"),
+                    tr("Delete them"), tr("Undo delete"));
+            setButtonIcons("dialogs/delete", "cancel");
+            setCancelButton(2);
+        }
+    }
+
 }
