]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix for #2563 - OrderedLayout flicker on repaint
authorArtur Signell <artur.signell@itmill.com>
Mon, 16 Feb 2009 06:29:21 +0000 (06:29 +0000)
committerArtur Signell <artur.signell@itmill.com>
Mon, 16 Feb 2009 06:29:21 +0000 (06:29 +0000)
Changed Label so it never wraps when its width is undefined.
Changed default Label width to 100%.

svn changeset:6841/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/ILabel.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IOrderedLayout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java
src/com/itmill/toolkit/ui/Label.java

index f3bec455f08a998983debcffe1cfdce22faf297d..1ca24b330e8cb972f253ea6473c548ebb3a6bbff 100644 (file)
@@ -20,6 +20,8 @@ import com.itmill.toolkit.terminal.gwt.client.Util;
 public class ILabel extends HTML implements Paintable {
 
     public static final String CLASSNAME = "i-label";
+    private static final String CLASSNAME_UNDEFINED_WIDTH = "i-label-undef-w";
+
     private ApplicationConnection client;
     private int verticalPaddingBorder = 0;
     private int horizontalPaddingBorder = 0;
@@ -72,7 +74,12 @@ public class ILabel extends HTML implements Paintable {
         } else if ("uidl".equals(mode)) {
             setHTML(uidl.getChildrenAsXML());
         } else if ("xhtml".equals(mode)) {
-            setHTML(uidl.getChildUIDL(0).getChildUIDL(0).getChildString(0));
+            UIDL content = uidl.getChildUIDL(0).getChildUIDL(0);
+            if (content.getChildCount() > 0) {
+                setHTML(content.getChildString(0));
+            } else {
+                setHTML("");
+            }
             sinkOnloads = true;
         } else if ("xml".equals(mode)) {
             setHTML(uidl.getChildUIDL(0).getChildString(0));
@@ -107,5 +114,10 @@ public class ILabel extends HTML implements Paintable {
     public void setWidth(String width) {
         horizontalPaddingBorder = Util.setWidthExcludingPaddingAndBorder(this,
                 width, horizontalPaddingBorder);
+        if (width == null || width.equals("")) {
+            setStyleName(getElement(), CLASSNAME_UNDEFINED_WIDTH, true);
+        } else {
+            setStyleName(getElement(), CLASSNAME_UNDEFINED_WIDTH, false);
+        }
     }
 }
index ffa30f724bbb5080959f5c127a6142495d4e99d5..aa961ee8a6f5a6d9031e21183689fc0451bd014b 100644 (file)
@@ -737,12 +737,13 @@ public class IOrderedLayout extends CellBasedLayout {
         for (Paintable p : children) {\r
             /* Update widget size from DOM */\r
             ChildComponentContainer componentContainer = getComponentContainer((Widget) p);\r
-            if (isDynamicWidth()) {\r
-                componentContainer.setUnlimitedContainerWidth();\r
-            } else {\r
-                componentContainer.setLimitedContainerWidth(activeLayoutSize\r
-                        .getWidth());\r
-            }\r
+            // This should no longer be needed (after #2563)\r
+            // if (isDynamicWidth()) {\r
+            // componentContainer.setUnlimitedContainerWidth();\r
+            // } else {\r
+            // componentContainer.setLimitedContainerWidth(activeLayoutSize\r
+            // .getWidth());\r
+            // }\r
 \r
             componentContainer.updateWidgetSize();\r
 \r
index fe8ba6497e366b00341b4bca6a87a2301af7b4ff..87e02f56af52921ff9ce628deb3045e7aba3b999 100644 (file)
@@ -72,7 +72,7 @@ public class ChildComponentContainer extends Panel {
         setElement(containerDIV);
 
         containerDIV.getStyle().setProperty("height", "0");
-        // DOM.setStyleAttribute(containerDIV, "width", "0px");
+        containerDIV.getStyle().setProperty("width", "0px");
         containerDIV.getStyle().setProperty("overflow", "hidden");
 
         widgetDIV = Document.get().createDivElement();
@@ -171,12 +171,15 @@ public class ChildComponentContainer extends Panel {
          * For fixed width layouts we specify the width directly so that height
          * is automatically calculated correctly (e.g. for Labels).
          */
-        if (fixedWidth > 0) {
-            setLimitedContainerWidth(fixedWidth);
-        } else {
-            setUnlimitedContainerWidth();
-        }
-
+        /*
+         * This should no longer be needed (after #2563) as all components are
+         * such that they can be rendered inside a 0x0 DIV.
+         */
+        // if (fixedWidth > 0) {
+        // setLimitedContainerWidth(fixedWidth);
+        // } else {
+        // setUnlimitedContainerWidth();
+        // }
         ((Paintable) widget).updateFromUIDL(childUIDL, client);
     }
 
index b11f9f5a2ebde621ee3f10e5457aaf96ba5e4c0c..1a9e497e9c51acb7ca45b72db7260f1d4626d2cb 100644 (file)
@@ -101,7 +101,7 @@ public class Label extends AbstractComponent implements Property,
      * Creates an empty Label.
      */
     public Label() {
-        setPropertyDataSource(new ObjectProperty("", String.class));
+        this("");
     }
 
     /**
@@ -110,7 +110,7 @@ public class Label extends AbstractComponent implements Property,
      * @param content
      */
     public Label(String content) {
-        setPropertyDataSource(new ObjectProperty(content, String.class));
+        this(content, CONTENT_DEFAULT);
     }
 
     /**
@@ -120,7 +120,7 @@ public class Label extends AbstractComponent implements Property,
      * @param contentSource
      */
     public Label(Property contentSource) {
-        setPropertyDataSource(contentSource);
+        this(contentSource, CONTENT_DEFAULT);
     }
 
     /**
@@ -130,8 +130,7 @@ public class Label extends AbstractComponent implements Property,
      * @param contentMode
      */
     public Label(String content, int contentMode) {
-        setPropertyDataSource(new ObjectProperty(content, String.class));
-        setContentMode(contentMode);
+        this(new ObjectProperty(content, String.class), contentMode);
     }
 
     /**
@@ -143,7 +142,10 @@ public class Label extends AbstractComponent implements Property,
      */
     public Label(Property contentSource, int contentMode) {
         setPropertyDataSource(contentSource);
-        setContentMode(contentMode);
+        if (contentMode != CONTENT_DEFAULT) {
+            setContentMode(contentMode);
+        }
+        setWidth(100, UNITS_PERCENTAGE);
     }
 
     /**