aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>2008-09-26 09:45:46 +0000
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>2008-09-26 09:45:46 +0000
commit1eb8a7ee03b342087efccd9217e75bbced40d67d (patch)
treeae86ed134571f934be7c679b9153515e8f082826
parent4af1aabba837639e9356f352510f9c40d07ece66 (diff)
downloadvaadin-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.java11
-rw-r--r--src/com/itmill/toolkit/tests/tickets/Ticket2119.java2
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;
}