From: Henri Sara Date: Tue, 6 Oct 2009 12:10:26 +0000 (+0000) Subject: Merged [9106]: #3027 Combobox left in wrong state - second changeset X-Git-Tag: 6.7.0.beta1~2435 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=a936b3f8278dfe19c592e20e90f85dd1a66f61ac;p=vaadin-framework.git Merged [9106]: #3027 Combobox left in wrong state - second changeset svn changeset:9107/svn branch:6.2 --- diff --git a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java index ac042eb899..5e4383a70f 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java @@ -581,6 +581,7 @@ public class VFilterSelect extends Composite implements Paintable, Field, private boolean filtering = false; private boolean selecting = false; + private boolean tabPressed = false; private String lastFilter = ""; private int lastIndex = -1; // last selected index when using arrows @@ -938,6 +939,7 @@ public class VFilterSelect extends Composite implements Paintable, Field, break; case KeyCodes.KEY_TAB: if (suggestionPopup.isAttached()) { + tabPressed = true; filterOptions(currentPage); } // onBlur() takes care of the rest @@ -1047,7 +1049,14 @@ public class VFilterSelect extends Composite implements Paintable, Field, public void onBlur(BlurEvent event) { focused = false; // much of the TAB handling takes place here - suggestionPopup.menu.doSelectedItemAction(); + if (tabPressed) { + tabPressed = false; + suggestionPopup.menu.doSelectedItemAction(); + suggestionPopup.hide(); + } else if (!suggestionPopup.isAttached() + || suggestionPopup.isJustClosed()) { + suggestionPopup.menu.doSelectedItemAction(); + } if (selectedOptionKey == null) { setPromptingOn(); }