*** empty log message ***
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Control.java
index 751ec55..ce41ffe 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Control.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Control.java
@@ -987,12 +987,31 @@
 		OS.GetSuperControl (theControl [0], theControl);
 	}
 	if (theControl [0] == 0) return;
+	theControl [0] = cursorControl;
+	do {
+		Widget widget = WidgetTable.get (theControl [0]);
+		if (widget != null) {
+			if (widget instanceof Control) {
+				Control control = (Control) widget;
+				if (control.isEnabled ()) break;
+			}
+		}
+		OS.GetSuperControl (theControl [0], theControl);
+	} while (theControl [0] != 0);
+	if (theControl [0] == 0) {
+		theControl [0] = theRoot [0];
+		Widget widget = WidgetTable.get (theControl [0]);
+		if (widget != null && widget instanceof Control) {
+			Control control = (Control) widget;
+			theControl [0] = control.handle;
+		}
+	} 
 	org.eclipse.swt.internal.carbon.Point localPoint = new org.eclipse.swt.internal.carbon.Point ();
 	localPoint.h = (short) inPoint.x;
 	localPoint.v = (short) inPoint.y;
 	int modifiers = OS.GetCurrentEventKeyModifiers ();
 	boolean [] cursorWasSet = new boolean [1];
-	OS.HandleControlSetCursor (cursorControl, localPoint, (short) modifiers, cursorWasSet);
+	OS.HandleControlSetCursor (theControl [0], localPoint, (short) modifiers, cursorWasSet);
 	if (!cursorWasSet [0]) OS.SetThemeCursor (OS.kThemeArrowCursor);
 }
 
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java
index 5bb16ff..ea23877 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java
@@ -1207,6 +1207,7 @@
 				Widget widget = WidgetTable.get (theControl [0]);
 				if (widget != null && widget instanceof Control) {
 					control = (Control) widget;
+					theControl[0] = control.handle;
 				}
 			}
 		}