diff options
-rw-r--r-- | server/src/main/java/com/vaadin/ui/components/grid/StaticSection.java | 7 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/tests/server/component/grid/GridChildrenTest.java | 21 |
2 files changed, 28 insertions, 0 deletions
diff --git a/server/src/main/java/com/vaadin/ui/components/grid/StaticSection.java b/server/src/main/java/com/vaadin/ui/components/grid/StaticSection.java index 840fa7b115..dcf27fb357 100644 --- a/server/src/main/java/com/vaadin/ui/components/grid/StaticSection.java +++ b/server/src/main/java/com/vaadin/ui/components/grid/StaticSection.java @@ -388,6 +388,13 @@ public abstract class StaticSection<ROW extends StaticSection.StaticRow<?>> for (CELL cell : cells.values()) { cell.detach(); } + for (CellState cellState : rowState.cellGroups.keySet()) { + if (cellState.type == GridStaticCellType.WIDGET + && cellState.connector != null) { + ((Component) cellState.connector).setParent(null); + cellState.connector = null; + } + } } void checkIfAlreadyMerged(String columnId) { diff --git a/server/src/test/java/com/vaadin/tests/server/component/grid/GridChildrenTest.java b/server/src/test/java/com/vaadin/tests/server/component/grid/GridChildrenTest.java index 4959169cf8..97cfe6ebc7 100644 --- a/server/src/test/java/com/vaadin/tests/server/component/grid/GridChildrenTest.java +++ b/server/src/test/java/com/vaadin/tests/server/component/grid/GridChildrenTest.java @@ -64,6 +64,17 @@ public class GridChildrenTest { } @Test + public void removeHeaderWithComponentInMergedHeaderCell() { + HeaderCell merged = grid.getDefaultHeaderRow().join("foo", "bar", + "baz"); + Label label = new Label(); + merged.setComponent(label); + Assert.assertEquals(grid, label.getParent()); + grid.removeHeaderRow(0); + Assert.assertNull(label.getParent()); + } + + @Test public void removeComponentInMergedFooterCell() { FooterCell merged = grid.addFooterRowAt(0).join("foo", "bar", "baz"); Label label = new Label(); @@ -74,6 +85,16 @@ public class GridChildrenTest { } @Test + public void removeFooterWithComponentInMergedFooterCell() { + FooterCell merged = grid.addFooterRowAt(0).join("foo", "bar", "baz"); + Label label = new Label(); + merged.setComponent(label); + Assert.assertEquals(grid, label.getParent()); + grid.removeFooterRow(0); + Assert.assertNull(label.getParent()); + } + + @Test public void componentsInMergedFooter() { FooterCell merged = grid.addFooterRowAt(0).join("foo", "bar", "baz"); Label label = new Label(); |