231776 - [SWT Mac] Incorrect mouseExit event generated when balloon ToolTip is shown
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 5b543cd..3916d54 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
@@ -3304,7 +3304,11 @@
 		inPoint.y = where.v - rect.top;
 		int [] theRoot = new int [1];
 		OS.GetRootControl (theWindow [0], theRoot);
-		OS.HIViewGetSubviewHit (theRoot [0], inPoint, true, theControl);
+		int[] event = new int[1];
+		OS.CreateEvent (0, OS.kEventClassMouse, OS.kEventMouseDown, 0.0, 0, event);
+		OS.SetEventParameter (event[0], OS.kEventParamWindowMouseLocation, OS.typeHIPoint, CGPoint.sizeof, inPoint);
+		OS.HIViewGetViewForMouseEvent (theRoot [0], event [0], theControl);
+		OS.ReleaseEvent(event[0]);
 		int cursorControl = theControl [0];
 		while (theControl [0] != 0 && theControl [0] != handle) {
 			OS.GetSuperControl (theControl [0], theControl);
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 0bff4f0..360432e 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
@@ -1372,7 +1372,11 @@
 	int [] theRoot = new int [1];
 	OS.GetRootControl (theWindow [0], theRoot);
 	int [] theControl = new int [1];
-	OS.HIViewGetSubviewHit (theRoot [0], inPoint, true, theControl);
+	int[] event = new int[1];
+	OS.CreateEvent (0, OS.kEventClassMouse, OS.kEventMouseDown, 0.0, 0, event);
+	OS.SetEventParameter (event[0], OS.kEventParamWindowMouseLocation, OS.typeHIPoint, CGPoint.sizeof, inPoint);
+	OS.HIViewGetViewForMouseEvent (theRoot [0], event [0], theControl);
+	OS.ReleaseEvent(event[0]);
 	while (theControl [0] != 0 && !OS.IsControlEnabled (theControl [0])) {				
 		OS.GetSuperControl (theControl [0], theControl);
 	}
@@ -3355,7 +3359,11 @@
 			inPoint.y = where.v - rect.top;
 			int [] theRoot = new int [1];
 			OS.GetRootControl (theWindow [0], theRoot);
-			OS.HIViewGetSubviewHit (theRoot [0], inPoint, true, theControl);
+			int[] event = new int[1];
+			OS.CreateEvent (0, OS.kEventClassMouse, OS.kEventMouseDown, 0.0, 0, event);
+			OS.SetEventParameter (event[0], OS.kEventParamWindowMouseLocation, OS.typeHIPoint, CGPoint.sizeof, inPoint);
+			OS.HIViewGetViewForMouseEvent (theRoot [0], event [0], theControl);
+			OS.ReleaseEvent(event[0]);
 			while (theControl [0] != 0 && !OS.IsControlEnabled (theControl [0])) {				
 				OS.GetSuperControl (theControl [0], theControl);
 			}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ToolTip.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ToolTip.java
index 7ee9e86..d51b0c9 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ToolTip.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/ToolTip.java
@@ -154,7 +154,7 @@
 	int w = size.x;
 	int h = size.y;
 	int t = (style & SWT.BALLOON) != 0 ? TIP_HEIGHT : 0;
-	int i = (style & SWT.BALLOON) != 0 ? 16 : 0;
+	int i = (style & SWT.BALLOON) != 0 ? 17 : 0;
 	tip.setSize (w, h + t);
 	int [] polyline;
 	spikeAbove = dest.height >= y + size.y + t;
@@ -583,7 +583,7 @@
 		if (!autohide || (style & SWT.BALLOON) != 0) {
 			// Show tip
 			if (tip == null) {
-				tip = new Shell (parent, SWT.ON_TOP | SWT.NO_TRIM);
+				tip = new Shell (parent, SWT.ON_TOP | SWT.NO_TRIM | SWT.TOOL);
 				Color background = display.getSystemColor (SWT.COLOR_INFO_BACKGROUND);
 				tip.setBackground (background);
 				Listener listener = new Listener () {