]> source.dussan.org Git - vaadin-framework.git/commitdiff
Only paint connector references for visible connectors (#8685)
authorArtur <Artur@Storm>
Tue, 17 Apr 2012 19:23:38 +0000 (22:23 +0300)
committerArtur Signell <artur@vaadin.com>
Wed, 18 Apr 2012 20:08:58 +0000 (23:08 +0300)
src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
src/com/vaadin/terminal/gwt/server/JsonCodec.java

index ec06c28780863d505de1a7407357091fd2c9096b..87d147d55b5d862a2b4c2f032ac782e11a3a0fd3 100644 (file)
@@ -1168,7 +1168,7 @@ public abstract class AbstractCommunicationManager implements Serializable {
      *            The child to check
      * @return true if the child is visible to the client, false otherwise
      */
-    private boolean isVisible(Component child) {
+    static boolean isVisible(Component child) {
         HasComponents parent = child.getParent();
         if (parent == null || !child.isVisible()) {
             return child.isVisible();
index 1824a16fb239c4643fc6ac5fac03b39d3dc3601f..8da8fdc9334c2d3c9e27ec2f5096911728236cc5 100644 (file)
@@ -25,6 +25,7 @@ import com.vaadin.external.json.JSONException;
 import com.vaadin.external.json.JSONObject;
 import com.vaadin.terminal.gwt.client.Connector;
 import com.vaadin.terminal.gwt.client.communication.JsonEncoder;
+import com.vaadin.ui.Component;
 
 /**
  * Decoder for converting RPC parameters and other values from JSON in transfer
@@ -205,7 +206,7 @@ public class JsonCodec implements Serializable {
             Application application) throws JSONException {
 
         if (null == value) {
-            return combineTypeAndValue(JsonEncoder.VTYPE_NULL, JSONObject.NULL);
+            return encodeNull();
         }
 
         if (valueType == null) {
@@ -252,6 +253,11 @@ public class JsonCodec implements Serializable {
             }
         } else if (value instanceof Connector) {
             Connector connector = (Connector) value;
+            if (value instanceof Component
+                    && !(AbstractCommunicationManager
+                            .isVisible((Component) value))) {
+                return encodeNull();
+            }
             return combineTypeAndValue(JsonEncoder.VTYPE_CONNECTOR,
                     connector.getConnectorId());
         } else if (transportType != null) {
@@ -264,6 +270,10 @@ public class JsonCodec implements Serializable {
         }
     }
 
+    private static JSONArray encodeNull() {
+        return combineTypeAndValue(JsonEncoder.VTYPE_NULL, JSONObject.NULL);
+    }
+
     private static Object encodeObject(Object value, Application application)
             throws JSONException {
         JSONObject jsonMap = new JSONObject();