Index: trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5554)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java	(revision 5555)
@@ -378,10 +378,5 @@
             Point curMousePos = e.getPoint();
             if (curMousePos.equals(rightClickPressPos)) {
-                WaySegment seg = Main.map.mapView.getNearestWaySegment(curMousePos, OsmPrimitive.isSelectablePredicate);
-                if (seg!=null) {
-                    snapHelper.setBaseSegment(seg);
-                    computeHelperLine();
-                    redrawIfRequired();
-                }
+                tryToSetBaseSegmentForAngleSnap();
             }
             return;
@@ -756,7 +751,19 @@
         updateKeyModifiers(e);
         mousePos = e.getPoint();
-
+        if (snapHelper.isSnapOn() && ctrl) 
+            tryToSetBaseSegmentForAngleSnap();
+         
         computeHelperLine();
         addHighlighting();
+    }
+    
+    /**
+     * This method is used to detect segment under mouse and use it as reference for angle snapping
+     */
+    private void tryToSetBaseSegmentForAngleSnap() {
+        WaySegment seg = Main.map.mapView.getNearestWaySegment(mousePos, OsmPrimitive.isSelectablePredicate);
+        if (seg!=null) {
+            snapHelper.setBaseSegment(seg);
+        }
     }
 
