diff options
author | Joonas Lehtinen <joonas.lehtinen@itmill.com> | 2008-09-26 09:45:46 +0000 |
---|---|---|
committer | Joonas Lehtinen <joonas.lehtinen@itmill.com> | 2008-09-26 09:45:46 +0000 |
commit | 1eb8a7ee03b342087efccd9217e75bbced40d67d (patch) | |
tree | ae86ed134571f934be7c679b9153515e8f082826 | |
parent | 4af1aabba837639e9356f352510f9c40d07ece66 (diff) | |
download | vaadin-framework-1eb8a7ee03b342087efccd9217e75bbced40d67d.tar.gz vaadin-framework-1eb8a7ee03b342087efccd9217e75bbced40d67d.zip |
Fixed #2119 : Select isn't updated correctly when value changed in the server. Also added support for #2117 to the ticket test.
svn changeset:5524/svn branch:trunk
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java | 11 | ||||
-rw-r--r-- | src/com/itmill/toolkit/tests/tickets/Ticket2119.java | 2 |
2 files changed, 11 insertions, 2 deletions
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 1cf54693b9..837f8b8f74 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java @@ -476,6 +476,10 @@ public class IFilterSelect extends Composite implements Paintable, Field, // shown in unfocused empty field, disappears on focus (e.g "Search here") private String emptyText = ""; + // Set true when popupopened has been clicked. Cleared on each UIDL-update. + // This handles the special case where are not filtering yet and the + // selected value has changed on the server-side. See #2119 + private boolean popupOpenerClicked; private static final String CLASSNAME_EMPTY = "empty"; private static final String ATTR_EMPTYTEXT = "emptytext"; @@ -582,7 +586,7 @@ public class IFilterSelect extends Composite implements Paintable, Field, optionUidl); currentSuggestions.add(suggestion); if (optionUidl.hasAttribute("selected")) { - if (!filtering) { + if (!filtering || popupOpenerClicked) { tb.setText(suggestion.getReplacementString()); selectedOptionKey = "" + suggestion.getOptionKey(); } @@ -596,7 +600,7 @@ public class IFilterSelect extends Composite implements Paintable, Field, captions += suggestion.getReplacementString(); } - if (!filtering && uidl.hasVariable("selected") + if ((!filtering || popupOpenerClicked) && uidl.hasVariable("selected") && uidl.getStringArrayVariable("selected").length == 0) { // select nulled tb.setText(emptyText); @@ -620,6 +624,8 @@ public class IFilterSelect extends Composite implements Paintable, Field, DOM.setStyleAttribute(spacer, "overflow", "hidden"); DOM.appendChild(panel.getElement(), spacer); + popupOpenerClicked = false; + } public void onSuggestionSelected(FilterSelectSuggestion suggestion) { @@ -741,6 +747,7 @@ public class IFilterSelect extends Composite implements Paintable, Field, // auto close feature if (!suggestionPopup.isJustClosed()) { filterOptions(-1, ""); + popupOpenerClicked = true; lastFilter = ""; } DOM.eventPreventDefault(DOM.eventGetCurrentEvent()); diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket2119.java b/src/com/itmill/toolkit/tests/tickets/Ticket2119.java index 73dec21ab8..144b631ea4 100644 --- a/src/com/itmill/toolkit/tests/tickets/Ticket2119.java +++ b/src/com/itmill/toolkit/tests/tickets/Ticket2119.java @@ -3,6 +3,7 @@ package com.itmill.toolkit.tests.tickets; import com.itmill.toolkit.Application; import com.itmill.toolkit.data.Property; import com.itmill.toolkit.data.util.ObjectProperty; +import com.itmill.toolkit.terminal.ExternalResource; import com.itmill.toolkit.ui.Button; import com.itmill.toolkit.ui.Label; import com.itmill.toolkit.ui.Layout; @@ -34,6 +35,7 @@ public class Ticket2119 extends Application { // If no window found, create it w = createWindow(); addWindow(w); + w.open(new ExternalResource(w.getURL())); } return w; } |