Index: plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java
===================================================================
--- plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(revision 35863)
+++ plugins/FastDraw/src/org/openstreetmap/josm/plugins/fastdraw/FastDrawingMode.java	(working copy)
@@ -98,6 +98,8 @@
 
     @Override
     public void enterMode() {
+        if (!isEnabled())
+            return;
         super.enterMode();
         lineWasSaved = false;
         settings = new FDSettings();
@@ -140,7 +142,7 @@
 
     @Override
     public boolean layerIsSupported(Layer l) {
-        return l instanceof OsmDataLayer;
+        return isEditableDataLayer(l);
     }
 
     @Override
Index: plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java
===================================================================
--- plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(revision 35863)
+++ plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(working copy)
@@ -139,13 +139,11 @@
 
     @Override
     public void enterMode() {
+        if (!isEnabled())
+            return;
         super.enterMode();
 
         MapFrame map = MainApplication.getMap();
-        if (getLayerManager().getEditDataSet() == null) {
-            map.selectSelectTool(false);
-            return;
-        }
         selectedColor = new NamedColorProperty(marktr("selected"), selectedColor).get();
         map.mapView.addMouseListener(this);
         map.mapView.addMouseMotionListener(this);
@@ -449,9 +447,14 @@
 
     @Override
     public boolean layerIsSupported(Layer l) {
-        return l instanceof OsmDataLayer;
+        return isEditableDataLayer(l);
     }
 
+    @Override
+    protected void updateEnabledState() {
+        setEnabled(getLayerManager().getEditLayer() != null);
+    }
+
     public final void updateSnap(Collection<? extends OsmPrimitive> newSelection) {
         building.clearAngleSnap();
         // update snap only if selection isn't too big
Index: plugins/splinex/src/org/openstreetmap/josm/plugins/Splinex/DrawSplineAction.java
===================================================================
--- plugins/splinex/src/org/openstreetmap/josm/plugins/Splinex/DrawSplineAction.java	(revision 35863)
+++ plugins/splinex/src/org/openstreetmap/josm/plugins/Splinex/DrawSplineAction.java	(working copy)
@@ -395,7 +395,7 @@
 
     @Override
     public boolean layerIsSupported(Layer l) {
-        return l instanceof OsmDataLayer;
+        return isEditableDataLayer(l);
     }
 
     @Override
