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
* Restore arbitary data under the given key
	 * 
	 * @param key
	 *            the key
	 * @param value
	 *            the value
	 */
	public void setData(String key, Object value) {
		if (data == null) {
			data = new HashMap();
		}
		data.put(key, value);
	}
	/**
	 * Get the data restored under the key
	 * 
	 * @param key
	 *            the key
	 * @return data or <code>null</code> if no entry is restored under the key
	 */
	public Object getData(String key) {
		if (data != null) {
			return data.get(key);
		}
		return null;
	}
	/**
	 * Set the shift (from the mouse position triggered the event) used to
	 * display the tooltip. By default the tooltip is shifted 3 pixels to the
	 * left