void sendToolTipEvent (boolean enter) {
if (!isVisible()) return;
NSWindow eventWindow = view.window();
if (tooltipTag == 0) {
NSView view = eventWindow.contentView();
tooltipTag = view.addToolTipRect(new NSRect(), eventWindow, 0);
if (tooltipTag != 0) {
NSTrackingArea trackingArea = new NSTrackingArea(tooltipTag);
id owner = trackingArea.owner();
if (owner != null) tooltipOwner = owner.id;
id userInfo = trackingArea.userInfo();
if (userInfo != null) {
tooltipUserData = userInfo.id;
} else {
long [] value = new long [1];
OS.object_getInstanceVariable(tooltipTag, new byte[]{'_','u', 's', 'e', 'r', 'I', 'n', 'f', 'o'}, value);
tooltipUserData = value[0];
}
}
}
if (tooltipTag == 0 || tooltipOwner == 0 || tooltipUserData == 0) return;
NSPoint pt = eventWindow.convertScreenToBase(NSEvent.mouseLocation());
NSEvent event = NSEvent.enterExitEventWithType(enter ? OS.NSMouseEntered : OS.NSMouseExited, pt, 0, 0, eventWindow.windowNumber(), null, 0, tooltipTag, tooltipUserData);
OS.objc_msgSend(tooltipOwner, enter ? OS.sel_mouseEntered_ : OS.sel_mouseExited_, event.id);
}