diff options
author | Marc Englund <marc.englund@itmill.com> | 2008-03-07 14:03:56 +0000 |
---|---|---|
committer | Marc Englund <marc.englund@itmill.com> | 2008-03-07 14:03:56 +0000 |
commit | 5df00a4facff179a0c51b1a0d16b6a2d3d161770 (patch) | |
tree | 88b845ef8ad8491a33291c0a46f4b198ae15113f | |
parent | 712a704db3129cd3bc5c8d2a8e78df011c371ca6 (diff) | |
download | vaadin-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-x | src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java | 13 | ||||
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/server/CommunicationManager.java | 14 |
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(); |