Index: /Users/mueck/dev/josm/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
===================================================================
--- /Users/mueck/dev/josm/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(revision 1632)
+++ /Users/mueck/dev/josm/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java	(working copy)
@@ -55,7 +55,7 @@
  * @author imi
  */
 public class SelectAction extends MapMode implements SelectionEnded {
-
+    public static boolean needMouseMove = false;
     enum Mode { move, rotate, select }
     private Mode mode = null;
     private long mouseDownTime = 0;
@@ -155,12 +155,12 @@
         // do not count anything as a move if it lasts less than 100 milliseconds.
         if ((mode == Mode.move) && (System.currentTimeMillis() - mouseDownTime < initialMoveDelay)) return;
 
-        if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == 0)
-            return;
+        if(mode != Mode.rotate) // button is pressed in rotate mode
+            if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == 0)
+                return;
 
-        if (mode == Mode.move) {
+        if (mode == Mode.move)
             setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
-        }
 
         if (mousePos == null) {
             mousePos = e.getPoint();
@@ -247,6 +245,15 @@
         didMove = true;
     }
 
+    /**
+     * Mac OSX simulates with  ctrl + mouse 1  the second mouse button hence no dragging events get fired.
+     *
+     */
+    @Override public void mouseMoved(MouseEvent e) {
+        if (needMouseMove && mode == Mode.rotate)
+            mouseDragged(e);
+    }
+
     private Collection<OsmPrimitive> getNearestCollectionVirtual(Point p, boolean allSegements) {
         MapView c = Main.map.mapView;
         int snapDistance = Main.pref.getInteger("mappaint.node.virtual-snap-distance", 8);
Index: /Users/mueck/dev/josm/src/org/openstreetmap/josm/tools/PlatformHookOsx.java
===================================================================
--- /Users/mueck/dev/josm/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(revision 1632)
+++ /Users/mueck/dev/josm/src/org/openstreetmap/josm/tools/PlatformHookOsx.java	(working copy)
@@ -1,15 +1,17 @@
 // License: GPL. Copyright 2007 by Immanuel Scholz and others
 package org.openstreetmap.josm.tools;
 
-import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.Main;
-import org.openstreetmap.josm.tools.PlatformHookUnixoid;
-
 import java.awt.event.KeyEvent;
-import java.lang.reflect.*;
 import java.io.IOException;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+
 import javax.swing.UIManager;
 
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.mapmode.SelectAction;
+
 /**
   * see PlatformHook.java
   */
@@ -39,6 +41,9 @@
             // by closing all its windows.
             System.out.println("Failed to register with OSX: " + ex);
         }
+
+        // Ctrl + mouse 1 is suppressing mouseDragged events
+        SelectAction.needMouseMove = true;
     }
     public Object invoke (Object proxy, Method method, Object[] args) throws Throwable {
         Boolean handled = Boolean.TRUE;
