aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-03-21 14:33:58 +0200
committerArtur Signell <artur@vaadin.com>2012-03-21 15:28:17 +0200
commit5efc842094c837b3396aab35f855ca899ee1b74b (patch)
tree2b20ad3d62776568672a9e039789ee453ff05cd3
parent08987be4c28f017098662a63e6f2527027328af5 (diff)
downloadvaadin-framework-5efc842094c837b3396aab35f855ca899ee1b74b.tar.gz
vaadin-framework-5efc842094c837b3396aab35f855ca899ee1b74b.zip
Unified logic in getting dirty connectors to ensure invisible connectors are never sent to the client. Also fixed isVisibleInContext to take parent restrictions into account and removed extra code.
-rw-r--r--src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java11
-rw-r--r--src/com/vaadin/ui/AbstractComponent.java20
2 files changed, 12 insertions, 19 deletions
diff --git a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
index 0c073f71b4..c41c41b4c2 100644
--- a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
+++ b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
@@ -780,19 +780,14 @@ public abstract class AbstractCommunicationManager implements
rootConnectorTracker.markAllComponentsDirty();
- dirtyVisibleConnectors.addAll(rootConnectorTracker
- .getDirtyComponents());
-
// Reset sent locales
locales = null;
requireLocale(application.getLocale().toString());
-
- } else {
- // TODO second list/stack for those whose state needs to be sent?
- dirtyVisibleConnectors
- .addAll(getDirtyVisibleComponents(rootConnectorTracker));
}
+ dirtyVisibleConnectors
+ .addAll(getDirtyVisibleComponents(rootConnectorTracker));
+
System.out.println("* Found " + dirtyVisibleConnectors.size()
+ " dirty connectors to paint");
rootConnectorTracker.markAllComponentsClean();
diff --git a/src/com/vaadin/ui/AbstractComponent.java b/src/com/vaadin/ui/AbstractComponent.java
index ad91f342ba..0bf4d935d4 100644
--- a/src/com/vaadin/ui/AbstractComponent.java
+++ b/src/com/vaadin/ui/AbstractComponent.java
@@ -739,6 +739,7 @@ public abstract class AbstractComponent implements Component, MethodEventSource
* if the paint operation failed.
*/
public void paint(PaintTarget target) throws PaintException {
+ // Only paint content of visible components.
if (!isVisibleInContext()) {
return;
}
@@ -751,18 +752,11 @@ public abstract class AbstractComponent implements Component, MethodEventSource
target.addAttribute("deferred", true);
} else {
// Paint the contents of the component
+ paintContent(target);
- // Only paint content of visible components.
- if (isVisibleInContext()) {
-
- paintContent(target);
-
- final ErrorMessage error = getErrorMessage();
- if (error != null) {
- error.paint(target);
- }
- } else {
- target.addAttribute("invisible", true);
+ final ErrorMessage error = getErrorMessage();
+ if (error != null) {
+ error.paint(target);
}
}
target.endPaintable(this);
@@ -786,6 +780,10 @@ public abstract class AbstractComponent implements Component, MethodEventSource
}
p = p.getParent();
}
+ if (getParent() != null && !getParent().isComponentVisible(this)) {
+ return false;
+ }
+
// All parents visible, return this state
return isVisible();
}