diff options
-rw-r--r-- | client/src/com/vaadin/client/ui/VFilterSelect.java | 5 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/fonticon/FontIconsTest.java | 34 |
2 files changed, 35 insertions, 4 deletions
diff --git a/client/src/com/vaadin/client/ui/VFilterSelect.java b/client/src/com/vaadin/client/ui/VFilterSelect.java index 356e7291c4..8e72d1ce52 100644 --- a/client/src/com/vaadin/client/ui/VFilterSelect.java +++ b/client/src/com/vaadin/client/ui/VFilterSelect.java @@ -446,16 +446,13 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, private void selectItem(final MenuItem newSelectedItem) { menu.selectItem(newSelectedItem); - String text = newSelectedItem != null ? newSelectedItem.getText() - : ""; - // Set the icon. FilterSelectSuggestion suggestion = (FilterSelectSuggestion) newSelectedItem .getCommand(); setSelectedItemIcon(suggestion.getIconUri()); // Set the text. - setText(text); + setText(suggestion.getReplacementString()); menu.updateKeyboardSelectedItem(); } diff --git a/uitest/src/com/vaadin/tests/fonticon/FontIconsTest.java b/uitest/src/com/vaadin/tests/fonticon/FontIconsTest.java index 61a38bf552..948c3c13b2 100644 --- a/uitest/src/com/vaadin/tests/fonticon/FontIconsTest.java +++ b/uitest/src/com/vaadin/tests/fonticon/FontIconsTest.java @@ -15,9 +15,14 @@ */ package com.vaadin.tests.fonticon; +import static org.junit.Assert.assertEquals; + import java.io.IOException; import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebElement; import com.vaadin.tests.tb3.MultiBrowserTest; @@ -28,4 +33,33 @@ public class FontIconsTest extends MultiBrowserTest { openTestURL(); compareScreen("all"); } + + @Test + public void comboBoxItemIconsOnKeyboardNavigation() throws Exception { + openTestURL(); + WebElement comboBoxInput = getDriver().findElement( + By.className("v-filterselect-input")); + + // No initial value. + assertEquals("", comboBoxInput.getText()); + + // Navigate to the first item with keyboard navigation. + sendKeys(comboBoxInput, Keys.ARROW_DOWN, Keys.ARROW_DOWN, + Keys.ARROW_DOWN); + + // Value must be "One" without any extra characters. + // See ticket #14660 + assertEquals("One", comboBoxInput.getAttribute("value")); + + // Check also the second item. + sendKeys(comboBoxInput, Keys.ARROW_DOWN); + assertEquals("Two", comboBoxInput.getAttribute("value")); + } + + private void sendKeys(WebElement element, Keys... keys) throws Exception { + for (Keys key : keys) { + element.sendKeys(key); + sleep(10); // For PhantomJS. + } + } } |