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
*/
public abstract class ToolTip {
	private Control control;
	private int xShift = 3;
	private int yShift = 0;
	private int popupDelay = 0;
	private int hideDelay = 0;
	private ToolTipOwnerControlListener listener;
	private HashMap data;
	
	private static Shell CURRENT_TOOLTIP;
	private TooltipHideListener hideListener = new TooltipHideListener();
	private boolean hideOnMouseDown = true;
	/**
	 * Create new instance which add TooltipSupport to the widget
	 * 
	 * @param control
	 *            the control on whose action the tooltip is shown
	 */
	public ToolTip(Control control) {
		this.control = control;
		this.control.addDisposeListener(new DisposeListener() {
			public void widgetDisposed(DisposeEvent e) {
				deactivate();
			}
		});
		this.listener = new ToolTipOwnerControlListener();
		activate();
	}
	/**