]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #1409
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 13 Feb 2008 07:57:09 +0000 (07:57 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 13 Feb 2008 07:57:09 +0000 (07:57 +0000)
svn changeset:3786/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java

index e40be981c92dec3a40a1ccaec02045b3819c69b4..0874a38e6e1ac4a6c988c4e1e39b0edde5342d31 100644 (file)
@@ -105,6 +105,8 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
         final Iterator newIt = uidlWidgets.iterator();
         final Iterator newUidl = uidl.getChildIterator();
 
+        final ArrayList paintedWidgets = new ArrayList();
+
         Widget oldChild = null;
         while (newIt.hasNext()) {
             final Widget child = (Widget) newIt.next();
@@ -116,7 +118,9 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
                 while (oldIt.hasNext()) {
                     oldChild = (Widget) oldIt.next();
                     // now oldChild is an instance of Paintable
-                    if (uidlWidgets.contains(oldChild)) {
+                    if (paintedWidgets.contains(oldChild)) {
+                        continue;
+                    } else if (uidlWidgets.contains(oldChild)) {
                         break;
                     } else {
                         removePaintable((Paintable) oldChild);
@@ -148,6 +152,7 @@ public abstract class IOrderedLayout extends ComplexPanel implements Container {
                 insert(child, index);
             }
             ((Paintable) child).updateFromUIDL(childUidl, client);
+            paintedWidgets.add(child);
         }
         // remove possibly remaining old Paintable object which were not updated
         while (oldIt.hasNext()) {