diff --git a/src/org/openstreetmap/josm/actions/JosmAction.java b/src/org/openstreetmap/josm/actions/JosmAction.java
index 8839de8..c33a258 100644
--- a/src/org/openstreetmap/josm/actions/JosmAction.java
+++ b/src/org/openstreetmap/josm/actions/JosmAction.java
@@ -307,4 +307,17 @@ public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
             updateEnabledState(newSelection);
         }
     }
+
+    /**
+     * Determines whether the current method (most useful: {@link #updateEnabledState()}) has been called from
+     * {@link LayerChangeAdapter#activeLayerChange}.
+     */
+    protected boolean isCalledFromLayerChange() {
+        for (StackTraceElement i : Thread.currentThread().getStackTrace()) {
+            if (LayerChangeAdapter.class.getName().equals(i.getClassName()) && i.getMethodName().contains("activeLayerChange")) {
+                return true;
+            }
+        }
+        return false;
+    }
 }
