tabPressedWhenPopupOpen = false;
suggestionPopup.menu.doSelectedItemAction();
suggestionPopup.hide();
- } else if (!suggestionPopup.isAttached()
+ } else if ((!suggestionPopup.isAttached() && waitingForFilteringResponse)
|| suggestionPopup.isJustClosed()) {
+ // typing so fast the popup was never opened, or it's just
+ // closed
suggestionPopup.menu.doSelectedItemAction();
}
if (selectedOptionKey == null) {
--- /dev/null
+package com.vaadin.tests.components.combobox;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.data.util.BeanItemContainer;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.util.Log;
+import com.vaadin.tests.util.Person;
+import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.ComboBox;
+
+public class ComboBoxDuplicateCaption extends TestBase {
+
+ private Log log = new Log(5);
+
+ @Override
+ protected void setup() {
+ List<Person> list = new ArrayList<Person>();
+ Person p1 = new Person();
+ p1.setFirstName("John");
+ p1.setLastName("Doe");
+ list.add(p1);
+
+ Person p2 = new Person();
+ p2.setFirstName("Jane");
+ p2.setLastName("Doe");
+ list.add(p2);
+
+ BeanItemContainer<Person> container = new BeanItemContainer<Person>(
+ Person.class);
+ container.addAll(list);
+
+ ComboBox box = new ComboBox("Duplicate captions test Box");
+ box.setId("ComboBox");
+ box.setImmediate(true);
+ box.addValueChangeListener(new ValueChangeListener() {
+
+ public void valueChange(
+ com.vaadin.data.Property.ValueChangeEvent event) {
+ Person p = (Person) event.getProperty().getValue();
+ log.log("Person = " + p.getFirstName() + " " + p.getLastName());
+ }
+ });
+ box.setContainerDataSource(container);
+ box.setItemCaptionMode(ItemCaptionMode.PROPERTY);
+ box.setItemCaptionPropertyId("lastName");
+
+ addComponent(log);
+
+ addComponent(box);
+ addComponent(new Button("Focus this"));
+ }
+
+ @Override
+ protected String getDescription() {
+ return "VFilterSelects with duplicate item captions should not try to do a select (exact match search) for onBlur if not waitingForFilteringResponse";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 10766;
+ }
+}