diff options
author | Artur Signell <artur@vaadin.com> | 2012-10-26 11:07:38 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2012-10-26 09:23:47 +0000 |
commit | 0fb5ddb96c889086178ff3d381d58076257a866a (patch) | |
tree | 5110f81cad5ae6e353c41294fee4f70a4444ff17 /server/src/com | |
parent | 4bda2ef6a6fa84f05a032ac837f2037bd3d502bf (diff) | |
download | vaadin-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.java | 27 | ||||
-rw-r--r-- | server/src/com/vaadin/ui/Table.java | 9 |
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) * |