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) {
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);