From: Aleksi Hietanen Date: Tue, 29 Nov 2016 13:46:06 +0000 (+0200) Subject: Make clicking outside a ComboBox add a pending new item (#18366) X-Git-Tag: 8.0.0.alpha9~8 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d44fa8b3494fb3780d2c3f8ab73a8e202e73ccfd;p=vaadin-framework.git Make clicking outside a ComboBox add a pending new item (#18366) It should not matter how you move from a field to the next. Tabbing to the next field already previously caused the new item handler to be invoked. This fixes the case when you click in the next field to work the same way. Change-Id: I3978d87cde8f05dce92edda2a4a116f4a15e0749 --- diff --git a/compatibility-client/src/main/java/com/vaadin/v7/client/ui/VFilterSelect.java b/compatibility-client/src/main/java/com/vaadin/v7/client/ui/VFilterSelect.java index 0b7724f3d0..29e4aa006f 100644 --- a/compatibility-client/src/main/java/com/vaadin/v7/client/ui/VFilterSelect.java +++ b/compatibility-client/src/main/java/com/vaadin/v7/client/ui/VFilterSelect.java @@ -2381,6 +2381,9 @@ public class VFilterSelect extends Composite focused = false; if (!readonly) { + if (textInputEnabled && allowNewItem) { + suggestionPopup.menu.doSelectedItemAction(); + } if (selectedOptionKey == null) { if (explicitSelectedCaption != null) { setPromptingOff(explicitSelectedCaption); diff --git a/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboBoxSelectingWithNewItemsAllowedTest.java b/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboBoxSelectingWithNewItemsAllowedTest.java index b568ecf912..c16a80856b 100644 --- a/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboBoxSelectingWithNewItemsAllowedTest.java +++ b/uitest/src/test/java/com/vaadin/tests/components/combobox/ComboBoxSelectingWithNewItemsAllowedTest.java @@ -64,6 +64,14 @@ public class ComboBoxSelectingWithNewItemsAllowedTest extends MultiBrowserTest { assertThatSelectedValueIs("a"); } + @Test + public void itemIsAddedWhenClickingOutside() { + clearInputAndType("foo"); + findElement(By.tagName("body")).click(); + assertOneMoreThanInitial(); + assertThatSelectedValueIs("foo"); + } + @Test public void matchingSuggestionIsSelectedWithEnter() { typeInputAndHitEnter("a0"); @@ -122,14 +130,14 @@ public class ComboBoxSelectingWithNewItemsAllowedTest extends MultiBrowserTest { } @Test - public void noSelectionAfterMouseOut() { + public void selectionOnMouseOut() { typeInputAndHitEnter("a20"); comboBoxElement.sendKeys(Keys.ARROW_DOWN, Keys.ARROW_DOWN); findElement(By.className("v-app")).click(); assertInitialItemCount(); - assertThatSelectedValueIs("a20"); + assertThatSelectedValueIs("a21"); } @Test