summaryrefslogtreecommitdiffstats
path: root/server/src/com
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-10-26 11:07:38 +0300
committerVaadin Code Review <review@vaadin.com>2012-10-26 09:23:47 +0000
commit0fb5ddb96c889086178ff3d381d58076257a866a (patch)
tree5110f81cad5ae6e353c41294fee4f70a4444ff17 /server/src/com
parent4bda2ef6a6fa84f05a032ac837f2037bd3d502bf (diff)
downloadvaadin-framework-0fb5ddb96c889086178ff3d381d58076257a866a.tar.gz
vaadin-framework-0fb5ddb96c889086178ff3d381d58076257a866a.zip
Fixed problem with Table calling markAsDirty in paint (#10071)
AbstractCommunicationManager now sets the writingResponse flag after calling beforeClientResponse to adhere to beforeClientResponse javadoc which says markAsDirty is ignored if called from beforeClientResponse. Change-Id: I58f4d009c85bef6756e2f2938d6f42ed88e11143
Diffstat (limited to 'server/src/com')
-rw-r--r--server/src/com/vaadin/server/AbstractCommunicationManager.java27
-rw-r--r--server/src/com/vaadin/ui/Table.java9
2 files changed, 22 insertions, 14 deletions
diff --git a/server/src/com/vaadin/server/AbstractCommunicationManager.java b/server/src/com/vaadin/server/AbstractCommunicationManager.java
index 5bbf8f5cea..43a9ced608 100644
--- a/server/src/com/vaadin/server/AbstractCommunicationManager.java
+++ b/server/src/com/vaadin/server/AbstractCommunicationManager.java
@@ -820,22 +820,21 @@ public abstract class AbstractCommunicationManager implements Serializable {
requireLocale(session.getLocale().toString());
}
- uiConnectorTracker.setWritingResponse(true);
- try {
+ dirtyVisibleConnectors
+ .addAll(getDirtyVisibleConnectors(uiConnectorTracker));
- dirtyVisibleConnectors
- .addAll(getDirtyVisibleConnectors(uiConnectorTracker));
-
- getLogger().log(
- Level.FINE,
- "Found " + dirtyVisibleConnectors.size()
- + " dirty connectors to paint");
- for (ClientConnector connector : dirtyVisibleConnectors) {
- boolean initialized = uiConnectorTracker
- .isClientSideInitialized(connector);
- connector.beforeClientResponse(!initialized);
- }
+ getLogger().log(
+ Level.FINE,
+ "Found " + dirtyVisibleConnectors.size()
+ + " dirty connectors to paint");
+ for (ClientConnector connector : dirtyVisibleConnectors) {
+ boolean initialized = uiConnectorTracker
+ .isClientSideInitialized(connector);
+ connector.beforeClientResponse(!initialized);
+ }
+ uiConnectorTracker.setWritingResponse(true);
+ try {
outWriter.print("\"changes\":[");
List<InvalidLayout> invalidComponentRelativeSizes = null;
diff --git a/server/src/com/vaadin/ui/Table.java b/server/src/com/vaadin/ui/Table.java
index d9e1403a03..242593c20d 100644
--- a/server/src/com/vaadin/ui/Table.java
+++ b/server/src/com/vaadin/ui/Table.java
@@ -2867,6 +2867,15 @@ public class Table extends AbstractSelect implements Action.Container,
}
}
+ @Override
+ public void beforeClientResponse(boolean initial) {
+ super.beforeClientResponse(initial);
+
+ // Ensure pageBuffer is filled before sending the response to avoid
+ // calls to markAsDirty during paint
+ getVisibleCells();
+ }
+
/*
* (non-Javadoc)
*