]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixed #2257 for Panel and TabSheet.
authorArtur Signell <artur.signell@itmill.com>
Tue, 2 Dec 2008 10:25:37 +0000 (10:25 +0000)
committerArtur Signell <artur.signell@itmill.com>
Tue, 2 Dec 2008 10:25:37 +0000 (10:25 +0000)
svn changeset:6067/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/Util.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IPanel.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ITabsheet.java

index cd446bb59a58bde1369259de6df6bb64a7e5fd64..9f208568df7d49bdbeaef16b47da82dd12bc8b68 100644 (file)
@@ -512,6 +512,12 @@ public class Util {
 
     public static void updateRelativeChildrenAndSendSizeUpdateEvent(
             ApplicationConnection client, HasWidgets container) {
+        updateRelativeChildrenAndSendSizeUpdateEvent(client, container,
+                (Widget) container);
+    }
+
+    public static void updateRelativeChildrenAndSendSizeUpdateEvent(
+            ApplicationConnection client, HasWidgets container, Widget widget) {
         /*
          * Relative sized children must be updated first so the component has
          * the correct outer dimensions when signaling a size change to the
@@ -520,13 +526,11 @@ public class Util {
         Iterator<Widget> childIterator = container.iterator();
         while (childIterator.hasNext()) {
             Widget w = childIterator.next();
-            // alert("Update relative size for " + getSimpleName(w));
             client.handleComponentRelativeSize(w);
         }
 
-        // alert("abc");
         HashSet<Widget> widgets = new HashSet<Widget>();
-        widgets.add((Widget) container);
+        widgets.add(widget);
         Util.componentSizeUpdated(widgets);
     }
 
index 2b7a8538248206859d9a9e0cfc3715939b5a659b..22d215f4e319b5908da7b5b10b790a2b87f872a0 100644 (file)
@@ -51,7 +51,7 @@ public class IPanel extends SimplePanel implements Container {
 
     ShortcutActionHandler shortcutHandler;
 
-    private String width;
+    private String width = "";
 
     private Element geckoCaptionMeter;
 
@@ -432,10 +432,20 @@ public class IPanel extends SimplePanel implements Container {
 
     @Override
     public void setWidth(String width) {
+        if (this.width.equals(width)) {
+            return;
+        }
+
         this.width = width;
         super.setWidth(width);
         if (!rendering) {
             runHacks(true);
+
+            if (height.equals("")) {
+                // Width change may affect height
+                Util.updateRelativeChildrenAndSendSizeUpdateEvent(client, this);
+            }
+
         }
     }
 
index 06a6810fbb8c8e3d6aa42d55e574f7dcced6a524..ccb7bb6a75adc0808814ec4db1d2fbe41bfd9189 100644 (file)
@@ -431,6 +431,13 @@ public class ITabsheet extends ITabsheetBase {
 
         ITabsheet.this.iLayout();
         (content).updateFromUIDL(contentUIDL, client);
+        /*
+         * The size of a cached, relative sized component must be updated to
+         * report correct size to updateOpenTabSize().
+         */
+        if (contentUIDL.getBooleanAttribute("cached")) {
+            client.handleComponentRelativeSize((Widget) content);
+        }
         updateOpenTabSize();
         ITabsheet.this.removeStyleDependentName("loading");
         if (previousVisibleWidget != null) {
@@ -469,6 +476,11 @@ public class ITabsheet extends ITabsheetBase {
 
     @Override
     public void setWidth(String width) {
+        if ((this.width == null && width.equals(""))
+                || (this.width != null && this.width.equals(width))) {
+            return;
+        }
+
         super.setWidth(width);
         if (width.equals("")) {
             width = null;
@@ -487,6 +499,11 @@ public class ITabsheet extends ITabsheetBase {
         }
 
         if (!rendering) {
+            if (isDynamicHeight()) {
+                Util.updateRelativeChildrenAndSendSizeUpdateEvent(client, tp,
+                        this);
+            }
+
             updateOpenTabSize();
             iLayout();
             // TODO Check if this is needed