From 82f6ce62db805fd45c92c53185b456af0a9aa3e5 Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Fri, 9 Nov 2007 07:30:49 +0000 Subject: [PATCH] #1100 (CustomLayoutDemo) svn changeset:2764/svn branch:trunk --- .../toolkit/terminal/gwt/client/ui/IPanel.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java index 5d2186aff6..57dccd6b98 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java @@ -27,6 +27,8 @@ public class IPanel extends SimplePanel implements Paintable, private String height; + private Widget layout; + public IPanel() { super(); DOM.appendChild(getElement(), captionNode); @@ -62,11 +64,6 @@ public class IPanel extends SimplePanel implements Paintable, : null; setWidth(w != null ? w : ""); - // TODO optimize: if only the caption has changed, don't re-render whole - // content - if (getWidget() != null) { - clear(); - } // Handle caption displaying boolean hasCaption = false; if (uidl.hasAttribute("caption") @@ -104,8 +101,13 @@ public class IPanel extends SimplePanel implements Paintable, // Render content UIDL layoutUidl = uidl.getChildUIDL(0); - Widget layout = client.getWidget(layoutUidl); - setWidget(layout); + Widget newLayout = client.getWidget(layoutUidl); + if(newLayout != layout) { + if(layout != null) + client.unregisterPaintable((Paintable) layout); + setWidget(newLayout); + layout = newLayout; + } ((Paintable) layout).updateFromUIDL(layoutUidl, client); } -- 2.39.5