Index: trunk/src/org/openstreetmap/josm/actions/DeleteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 1417)
+++ trunk/src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 1418)
@@ -25,4 +25,6 @@
 
     public void actionPerformed(ActionEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
         new org.openstreetmap.josm.actions.mapmode.DeleteAction(Main.map)
                 .doActionPerformed(e);
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 1417)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 1418)
@@ -95,5 +95,5 @@
         if (e.getButton() != MouseEvent.BUTTON1)
             return;
-        if(!Main.map.mapView.isDrawableLayer())
+        if(!Main.map.mapView.isVisibleDrawableLayer())
             return;
         boolean ctrl = (e.getModifiers() & ActionEvent.CTRL_MASK) != 0;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 1417)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 1418)
@@ -126,4 +126,6 @@
      */
     @Override public void mouseDragged(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
         if (mode == Mode.select) return;
 
@@ -193,4 +195,6 @@
      */
     @Override public void mousePressed(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
         if (!(Boolean)this.getValue("active")) return;
         if (e.getButton() != MouseEvent.BUTTON1)
@@ -220,4 +224,6 @@
      */
     @Override public void mouseReleased(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
         restoreCursor();
         if (selectedSegment == null) return;
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 1417)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 1418)
@@ -145,4 +145,7 @@
      */
     @Override public void mouseDragged(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
+        
         cancelDrawMode = true;
         if (mode == Mode.select) return;
@@ -283,4 +286,7 @@
      */
     @Override public void mousePressed(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
+        
         cancelDrawMode = false;
         if (! (Boolean)this.getValue("active")) return;
@@ -332,4 +338,7 @@
      */
     @Override public void mouseReleased(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
+        
         if (mode == Mode.select) {
             selectionManager.unregister(Main.map.mapView);
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 1417)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 1418)
@@ -190,4 +190,9 @@
         return activeLayer != null && activeLayer instanceof OsmDataLayer;
     }
+    
+    public Boolean isVisibleDrawableLayer() {
+        return isDrawableLayer() && activeLayer.visible;
+    }
+    
 
     /**
