From: Matti Tahvonen Date: Thu, 5 Jun 2008 07:57:52 +0000 (+0000) Subject: fixes #1775 X-Git-Tag: 6.7.0.beta1~4665 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5285719495c3e498d5968d4b04059068c3c3d422;p=vaadin-framework.git fixes #1775 svn changeset:4744/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java index 00fc329c23..d59895a89d 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java @@ -5,7 +5,9 @@ package com.itmill.toolkit.terminal.gwt.client.ui; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; +import java.util.Set; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; @@ -137,6 +139,9 @@ public class ICustomLayout extends ComplexPanel implements Paintable, iLayout(); + Set oldWidgets = new HashSet(); + oldWidgets.addAll(locationToWidget.values()); + // For all contained widgets for (final Iterator i = uidl.getChildIterator(); i.hasNext();) { final UIDL uidlForChild = (UIDL) i.next(); @@ -150,6 +155,14 @@ public class ICustomLayout extends ComplexPanel implements Paintable, } catch (final IllegalArgumentException e) { // If no location is found, this component is not visible } + oldWidgets.remove(child); + } + } + for (Iterator iterator = oldWidgets.iterator(); iterator.hasNext();) { + Widget oldWidget = (Widget) iterator.next(); + if (oldWidget.isAttached()) { + // slot of this widget is emptied, remove it + remove(oldWidget); } } diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket1775.java b/src/com/itmill/toolkit/tests/tickets/Ticket1775.java index d37bd78903..ca3093855d 100644 --- a/src/com/itmill/toolkit/tests/tickets/Ticket1775.java +++ b/src/com/itmill/toolkit/tests/tickets/Ticket1775.java @@ -10,7 +10,7 @@ public class Ticket1775 extends com.itmill.toolkit.Application { public void init() { - final Window main = new Window("#1673"); + final Window main = new Window("#1775"); setMainWindow(main); main.setTheme("example"); String layoutName = "mainLayout";