Bug 170827 ControlDecoration uses the wrong GC method to render text
The constructor of the Hover in ControlDecoration: hoverShell.addPaintListener(new PaintListener() { public void paintControl(PaintEvent pe) { pe.gc.drawString(text, hm, hm); if (!CARBON) { pe.gc.drawPolygon(getPolygon(true)); } } }); The size of the hover is correctly performed when there are carriage returns in the text. However, the text is painted as String. This causes only the first line to be painted and the rest of the hover is empty. The fix is to use GC.drawText' instead.
bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ControlDecoration.java
*/
	private DisposeListener disposeListener;
	/**
	 * The paint listener installed for drawing the decoration
	 */
	private PaintListener paintListener;
	/**
	 * The mouse listener installed for tracking the hover
	 */
	private MouseTrackListener mouseListener;
	/**
	 * The mouse move listener installed for tracking the hover
	 */
	private MouseMoveListener mouseMoveListener;
	/**
	 * Control that we last installed a move listener on. We only want one at a
	 * time.
	 */
	private Control moveListeningTarget = null;
	/**
	 * Debug counter used to match add and remove listeners
	 */
	private int listenerInstalls = 0;
	/**
	 * The current rectangle used for tracking mouse moves
	 */
	private Rectangle decorationRectangle;
	/**
	 * An internal flag tracking whether we have focus. We use this rather than
	 * isFocusControl() so that we can set the flag as soon as we get the focus