Bug 164350 [JFace] Listener optimization in ToolTip
The hideListener in ToolTip is a bit too eager. If we're not handling mouse down events it doesn't need to be applied recursively. Also, the mouseExit hander doesn't need to be on anything under the shell. If fixed we should be careful to re-tool the listener in the event that the setHideOnMouseDown event changes state of that field.
bundles/org.eclipse.jface/src/org/eclipse/jface/window/ToolTip.java
* Should the tooltip displayed because of the given event.
	 * <p>
	 * <b>Subclasses may overwrite this to get custom behaviour</b>
	 * </p>
	 * 
	 * @param event
	 *            the event
	 * @return <code>true</code> if tooltip should be displayed
	 */
	protected boolean shouldCreateToolTip(Event event) {
		return true;
	}
	private Shell toolTipCreate(final Event event) {
		if (shouldCreateToolTip(event)) {
			Shell shell = new Shell(control.getShell(), SWT.ON_TOP | SWT.TOOL
					| SWT.NO_FOCUS);
			shell.setLayout(new FillLayout());
			shell.setLocation(control.toDisplay(event.x + xShift, event.y
					+ yShift));
			toolTipOpen(shell, event);
			return shell;
		}
		return null;
	}
	private void toolTipShow(Shell tip, Event event) {
		if (!tip.isDisposed()) {
			createToolTipContentArea(event, tip);
			toolTipHookRecursively(tip, true);
			tip.pack();
			tip.setVisible(true);