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 () {