]> source.dussan.org Git - vaadin-framework.git/commitdiff
Merged [9106]: #3027 Combobox left in wrong state - second changeset
authorHenri Sara <henri.sara@itmill.com>
Tue, 6 Oct 2009 12:10:26 +0000 (12:10 +0000)
committerHenri Sara <henri.sara@itmill.com>
Tue, 6 Oct 2009 12:10:26 +0000 (12:10 +0000)
svn changeset:9107/svn branch:6.2

src/com/vaadin/terminal/gwt/client/ui/VFilterSelect.java

index ac042eb899e22cd8d9351cb71d23ec2df71daa02..5e4383a70f6115c33958e22dcd0467498d3157bf 100644 (file)
@@ -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();
         }