From 044daf86d80a2dc4c84127c783e383bdd7e111ab Mon Sep 17 00:00:00 2001 From: Teemu Suo-Anttila Date: Thu, 9 Jul 2015 12:31:47 +0300 Subject: Fix displaying Details when Grid is attached to DOM (#18390) Change-Id: Ib892eb4d40bbb655113d21b622cc117d54b2cebc --- .../vaadin/client/connectors/GridConnector.java | 28 ++++++++++++++++------ client/src/com/vaadin/client/widgets/Grid.java | 3 ++- 2 files changed, 23 insertions(+), 8 deletions(-) (limited to 'client') diff --git a/client/src/com/vaadin/client/connectors/GridConnector.java b/client/src/com/vaadin/client/connectors/GridConnector.java index b720dc442f..ef52a429e7 100644 --- a/client/src/com/vaadin/client/connectors/GridConnector.java +++ b/client/src/com/vaadin/client/connectors/GridConnector.java @@ -735,13 +735,20 @@ public class GridConnector extends AbstractHasComponentsConnector implements private final DetailsListener detailsListener = new DetailsListener() { @Override - public void reapplyDetailsVisibility(int rowIndex, JsonObject row) { - if (hasDetailsOpen(row)) { - getWidget().setDetailsVisible(rowIndex, true); - detailsConnectorFetcher.schedule(); - } else { - getWidget().setDetailsVisible(rowIndex, false); - } + public void reapplyDetailsVisibility(final int rowIndex, + final JsonObject row) { + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + + @Override + public void execute() { + if (hasDetailsOpen(row)) { + getWidget().setDetailsVisible(rowIndex, true); + detailsConnectorFetcher.schedule(); + } else { + getWidget().setDetailsVisible(rowIndex, false); + } + } + }); } private boolean hasDetailsOpen(JsonObject row) { @@ -911,6 +918,13 @@ public class GridConnector extends AbstractHasComponentsConnector implements layout(); } + @Override + public void onUnregister() { + customDetailsGenerator.indexToDetailsMap.clear(); + + super.onUnregister(); + } + @Override public void onStateChanged(final StateChangeEvent stateChangeEvent) { super.onStateChanged(stateChangeEvent); diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java index 6d9e5d18ec..53ccd432c4 100644 --- a/client/src/com/vaadin/client/widgets/Grid.java +++ b/client/src/com/vaadin/client/widgets/Grid.java @@ -7649,7 +7649,8 @@ public class Grid extends ResizeComposite implements @Override protected void onDetach() { - for (int row : visibleDetails) { + Set details = new HashSet(visibleDetails); + for (int row : details) { setDetailsVisible(row, false); } -- cgit v1.2.3