Bug 418420 - [Decorators] ControlDecoration tooltip is shown even though decoration image is invisible Signed-off-by: Ruediger Herrmann <ruediger.herrmann@gmx.de>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ControlDecoration.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ControlDecoration.java index 02d5a15..87a0309 100644 --- a/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ControlDecoration.java +++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ControlDecoration.java
@@ -7,6 +7,7 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Rüdiger Herrmann - fix for bug 418420 *******************************************************************************/ package org.eclipse.jface.fieldassist; @@ -1075,6 +1076,12 @@ if (!visible) { return; } + + // If the decoration is hidden, don't show the hover. + if (showOnlyOnFocus && !control.isFocusControl()) { + return; + } + // If there is no text, any existing hover should be hidden, and // there is nothing more to do. if (text == null || text.length() == 0) {
diff --git a/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/fieldassist/ControlDecorationTests.java b/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/fieldassist/ControlDecorationTests.java index 655112b..1d86471 100644 --- a/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/fieldassist/ControlDecorationTests.java +++ b/tests/org.eclipse.ui.tests/Eclipse JFace Tests/org/eclipse/jface/tests/fieldassist/ControlDecorationTests.java
@@ -75,6 +75,19 @@ assertTwoShellsUp(); } + public void testBug418420() { + AbstractFieldAssistWindow window = getFieldAssistWindow(); + window.open(); + ControlDecoration decoration = new ControlDecoration(window.getFieldAssistControl(), SWT.RIGHT); + decoration.setImage(FieldDecorationRegistry.getDefault() + .getFieldDecoration(FieldDecorationRegistry.DEC_INFORMATION).getImage()); + decoration.setDescriptionText("foo"); + decoration.setShowOnlyOnFocus(true); + anotherControl.forceFocus(); + decoration.showHoverText("Show me"); + assertOneShellUp(); + } + /* (non-Javadoc) * @see org.eclipse.jface.tests.fieldassist.AbstractFieldAssistTestCase#createFieldAssistWindow() */