]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #1775
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 5 Jun 2008 07:57:52 +0000 (07:57 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 5 Jun 2008 07:57:52 +0000 (07:57 +0000)
svn changeset:4744/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java
src/com/itmill/toolkit/tests/tickets/Ticket1775.java

index 00fc329c231a37e422081d337647a930a3f31d70..d59895a89df1771e2cc5a09ad2461f44c9cdd6be 100644 (file)
@@ -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);
             }
         }
 
index d37bd789030df7c03d649cea9215a432b11473b4..ca3093855d70892e9efe1ed0554e3040856dfdd3 100644 (file)
@@ -10,7 +10,7 @@ public class Ticket1775 extends com.itmill.toolkit.Application {
 \r
     public void init() {\r
 \r
-        final Window main = new Window("#1673");\r
+        final Window main = new Window("#1775");\r
         setMainWindow(main);\r
         main.setTheme("example");\r
         String layoutName = "mainLayout";\r