From: Marc Englund Date: Fri, 25 Jan 2008 15:06:55 +0000 (+0000) Subject: Non-immediate mode works like it should when not in immediate mode. X-Git-Tag: 6.7.0.beta1~5152 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=afc95e6c9482fc0611449d3d0be7c33ac7daa82b;p=vaadin-framework.git Non-immediate mode works like it should when not in immediate mode. Un-focusing the component will not revert value if the value is valid. svn changeset:3659/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java index 5ab45205b1..2bd7cee311 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java @@ -369,35 +369,42 @@ public class IFilterSelect extends Composite implements Paintable, public void doSelectedItemAction() { final MenuItem item = getSelectedItem(); - if (allowNewItem) { - final String newItemValue = tb.getText(); - // check for exact match in menu - int p = getItems().size(); - if (p > 0) { - for (int i = 0; i < p; i++) { - final MenuItem potentialExactMatch = (MenuItem) getItems() - .get(i); - if (potentialExactMatch.getText().equals(newItemValue)) { - selectItem(potentialExactMatch); - doItemAction(potentialExactMatch, true); - suggestionPopup.hide(); - return; - } + final String enteredItemValue = tb.getText(); + // check for exact match in menu + int p = getItems().size(); + if (p > 0) { + for (int i = 0; i < p; i++) { + final MenuItem potentialExactMatch = (MenuItem) getItems() + .get(i); + if (potentialExactMatch.getText().equals(enteredItemValue)) { + selectItem(potentialExactMatch); + doItemAction(potentialExactMatch, true); + suggestionPopup.hide(); + return; } } + } + if (allowNewItem) { - if (!newItemValue.equals("")) { - client.updateVariable(paintableId, "newitem", newItemValue, - true); + if (!enteredItemValue.equals("")) { + client.updateVariable(paintableId, "newitem", + enteredItemValue, immediate); } } else if (item != null && item.getText().toLowerCase().startsWith( lastFilter.toLowerCase())) { doItemAction(item, true); + } else { + if (currentSuggestion != null) { + tb.setText(currentSuggestion.getReplacementString()); + selectedOptionKey = currentSuggestion.key; + } else { + tb.setText(""); + selectedOptionKey = null; + } } suggestionPopup.hide(); } - } public static final int FILTERINGMODE_OFF = 0; @@ -728,14 +735,9 @@ public class IFilterSelect extends Composite implements Paintable, } public void onLostFocus(Widget sender) { - if (currentSuggestion == null - || !tb.getText().equals( - currentSuggestion.getReplacementString())) { - if (currentSuggestion != null) { - tb.setText(currentSuggestion.getDisplayString()); - } else { - tb.setText(""); - } + if (suggestionPopup.isJustClosed()) { + suggestionPopup.menu.doSelectedItemAction(); } + } }