summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Englund <marc.englund@itmill.com>2008-03-07 14:03:56 +0000
committerMarc Englund <marc.englund@itmill.com>2008-03-07 14:03:56 +0000
commit5df00a4facff179a0c51b1a0d16b6a2d3d161770 (patch)
tree88b845ef8ad8491a33291c0a46f4b198ae15113f
parent712a704db3129cd3bc5c8d2a8e78df011c371ca6 (diff)
downloadvaadin-framework-5df00a4facff179a0c51b1a0d16b6a2d3d161770.tar.gz
vaadin-framework-5df00a4facff179a0c51b1a0d16b6a2d3d161770.zip
Mainwindow (and theoretically other windows) can now be changed; fixes #1450
svn changeset:4003/svn branch:trunk
-rwxr-xr-xsrc/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java13
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java14
2 files changed, 24 insertions, 3 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
index 6e00355d6e..0b15fb6036 100755
--- a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
@@ -378,6 +378,16 @@ public class ApplicationConnection {
}
}
+ JSONObject meta = null;
+ if (((JSONObject) json).containsKey("meta")) {
+ meta = ((JSONObject) json).get("meta").isObject();
+ if (meta.containsKey("repaintAll")) {
+ view.clear();
+ idToPaintable.clear();
+ paintableToId.clear();
+ }
+ }
+
// Process changes
final JSONArray changes = (JSONArray) ((JSONObject) json)
.get("changes");
@@ -411,8 +421,7 @@ public class ApplicationConnection {
}
}
- if (((JSONObject) json).containsKey("meta")) {
- final JSONObject meta = ((JSONObject) json).get("meta").isObject();
+ if (meta != null) {
if (meta.containsKey("focus")) {
final String focusPid = meta.get("focus").isString()
.stringValue();
diff --git a/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java b/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java
index 6c90cd24fc..70e85f0e28 100644
--- a/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java
+++ b/src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java
@@ -256,6 +256,13 @@ public class CommunicationManager implements Paintable.RepaintRequestListener {
outWriter.print("\"changes\":[");
+ // re-get mainwindow - may have been changed
+ Window newWindow = getApplicationWindow(request, application);
+ if (newWindow != window) {
+ window = newWindow;
+ repaintAll = true;
+ }
+
JsonPaintTarget paintTarget = new JsonPaintTarget(this,
outWriter, !repaintAll);
@@ -347,7 +354,12 @@ public class CommunicationManager implements Paintable.RepaintRequestListener {
outWriter.print("]"); // close changes
outWriter.print(", \"meta\" : {");
- final boolean metaOpen = false;
+ boolean metaOpen = false;
+
+ if (repaintAll) {
+ metaOpen = true;
+ outWriter.write("\"repaintAll\":true");
+ }
// add meta instruction for client to set focus if it is set
final Paintable f = (Paintable) application.consumeFocus();