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
* callback, rather than having to do an asyncExec in the middle of a focus
	 * callback to ensure that isFocusControl() represents the outcome of the
	 * event.
	 */
	private boolean hasFocus = false;
	/**
	 * The hover used for showing description text
	 */
	private Hover hover;
	/**
	 * The hover used to show a decoration image's description.
	 */
	class Hover {
		private static final String EMPTY = ""; 
		/**
		 * Offset of info hover arrow from the left or right side.
		 */
		private int hao = 10;
		/**
		 * Width of info hover arrow.
		 */
		private int haw = 8;
		/**
		 * Height of info hover arrow.
		 */
		private int hah = 10;
		/**
		 * Margin around info hover text.
		 */
		private int hm = 2;