]> source.dussan.org Git - vaadin-framework.git/commitdiff
Run onChildSizeChange for new children
authorLeif Åstrand <leif@vaadin.com>
Tue, 3 Apr 2012 11:27:14 +0000 (14:27 +0300)
committerLeif Åstrand <leif@vaadin.com>
Tue, 3 Apr 2012 11:29:42 +0000 (14:29 +0300)
src/com/vaadin/terminal/gwt/client/ui/RootConnector.java

index 988c1558cce79785cdd80f5684f2c211cf9b1fd0..3ddeec10b7ead46c0cffdf6a69f745755d894f25 100644 (file)
@@ -157,8 +157,9 @@ public class RootConnector extends AbstractComponentContainerConnector {
         UIDL childUidl = uidl.getChildUIDL(childIndex);
         final ComponentConnector lo = client.getPaintable(childUidl);
 
+        boolean layoutChanged = getWidget().layout != lo;
         if (getWidget().layout != null) {
-            if (getWidget().layout != lo) {
+            if (layoutChanged) {
                 // remove old
                 client.unregisterPaintable(getWidget().layout);
                 if (childStateChangeHandlerRegistration != null) {
@@ -170,12 +171,15 @@ public class RootConnector extends AbstractComponentContainerConnector {
                 getWidget().layout = lo;
             }
         } else {
-            if (getWidget().layout != lo) {
+            getWidget().setWidget(lo.getWidget());
+            getWidget().layout = lo;
+            if (layoutChanged) {
                 childStateChangeHandlerRegistration = lo
                         .addStateChangeHandler(childStateChangeHandler);
+                // Must handle new child here as state change events are already
+                // fired
+                onChildSizeChange();
             }
-            getWidget().setWidget(lo.getWidget());
-            getWidget().layout = lo;
         }
 
         getWidget().layout.updateFromUIDL(childUidl, client);