Index: src/org/openstreetmap/josm/actions/DeleteAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/DeleteAction.java	(revision 1413)
+++ src/org/openstreetmap/josm/actions/DeleteAction.java	(working copy)
@@ -24,6 +24,8 @@
     }
 
     public void actionPerformed(ActionEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
         new org.openstreetmap.josm.actions.mapmode.DeleteAction(Main.map)
                 .doActionPerformed(e);
     }
Index: src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(revision 1413)
+++ src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java	(working copy)
@@ -95,7 +95,7 @@
     @Override public void mouseClicked(MouseEvent e) {
         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;
         boolean shift = (e.getModifiers() & ActionEvent.SHIFT_MASK) != 0;
Index: src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 1413)
+++ src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(working copy)
@@ -125,6 +125,8 @@
      * mouse (which will become selected).
      */
     @Override public void mouseDragged(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
         if (mode == Mode.select) return;
 
         // do not count anything as a move if it lasts less than 100 milliseconds.
@@ -192,6 +194,8 @@
     /**
      */
     @Override public void mousePressed(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
         if (!(Boolean)this.getValue("active")) return;
         if (e.getButton() != MouseEvent.BUTTON1)
             return;
@@ -219,6 +223,8 @@
      * Restore the old mouse cursor.
      */
     @Override public void mouseReleased(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
         restoreCursor();
         if (selectedSegment == null) return;
         if (mousePos.distance(initialMousePos) > 10) {
Index: src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 1413)
+++ src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(working copy)
@@ -144,6 +144,9 @@
      * mouse (which will become selected).
      */
     @Override public void mouseDragged(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
+        
         cancelDrawMode = true;
         if (mode == Mode.select) return;
 
@@ -282,6 +285,9 @@
      * cursor to movement.
      */
     @Override public void mousePressed(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
+        
         cancelDrawMode = false;
         if (! (Boolean)this.getValue("active")) return;
         if (e.getButton() != MouseEvent.BUTTON1)
@@ -331,6 +337,9 @@
      * Restore the old mouse cursor.
      */
     @Override public void mouseReleased(MouseEvent e) {
+        if(!Main.map.mapView.isVisibleDrawableLayer())
+            return;
+        
         if (mode == Mode.select) {
             selectionManager.unregister(Main.map.mapView);
 
Index: src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- src/org/openstreetmap/josm/gui/MapView.java	(revision 1413)
+++ src/org/openstreetmap/josm/gui/MapView.java	(working copy)
@@ -189,6 +189,11 @@
     {
         return activeLayer != null && activeLayer instanceof OsmDataLayer;
     }
+    
+    public Boolean isVisibleDrawableLayer() {
+        return isDrawableLayer() && activeLayer.visible;
+    }
+    
 
     /**
      * Remove the layer from the mapview. If the layer was in the list before,
