Index: /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 6036)
+++ /trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java	(revision 6037)
@@ -66,4 +66,5 @@
      */
     private boolean alwaysCreateNodes = false;
+    private boolean nodeDragWithoutCtrl;
 
     private long mouseDownTime = 0;
@@ -210,5 +211,5 @@
         helperStrokeRA = new BasicStroke(1);
         symbolSize = Main.pref.getDouble("extrude.angle-symbol-radius", 8);
-        
+        nodeDragWithoutCtrl = Main.pref.getBoolean("extrude.drag-nodes-without-ctrl", true);
         oldLineStroke = GuiHelper.getCustomizedStroke(Main.pref.get("extrude.ctrl.stroke.old-line", "1"));
         mainStroke = GuiHelper.getCustomizedStroke(Main.pref.get("extrude.stroke.main", "3"));
@@ -248,12 +249,14 @@
         
         if (selectedNode != null) {
-            movingNodeList = new ArrayList<OsmPrimitive>();
-            movingNodeList.add(selectedNode);
-            calculatePossibleDirectionsByNode();
-            if (possibleMoveDirections.isEmpty()) { 
-                // if no directions fould, do not enter dragging mode
-                return;
+            if (ctrl || nodeDragWithoutCtrl) {
+                movingNodeList = new ArrayList<OsmPrimitive>();
+                movingNodeList.add(selectedNode);
+                calculatePossibleDirectionsByNode();
+                if (possibleMoveDirections.isEmpty()) { 
+                    // if no directions fould, do not enter dragging mode
+                    return;
+                }
+                mode = Mode.translate_node;
             }
-            mode = Mode.translate_node;
         } else {
             // Otherwise switch to another mode
