]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix for #2253 - Use getBoundingClientRect() for measuring elements when available.
authorArtur Signell <artur.signell@itmill.com>
Fri, 5 Dec 2008 11:14:26 +0000 (11:14 +0000)
committerArtur Signell <artur.signell@itmill.com>
Fri, 5 Dec 2008 11:14:26 +0000 (11:14 +0000)
svn changeset:6093/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/Util.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java
src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java

index 9f208568df7d49bdbeaef16b47da82dd12bc8b68..fc33e2259b73878b53b9e8428d8cc7dde048293d 100644 (file)
@@ -534,4 +534,38 @@ public class Util {
         Util.componentSizeUpdated(widgets);
     }
 
+    public static native int getRequiredWidth(
+            com.google.gwt.dom.client.Element element)
+    /*-{
+        var width;
+        if (element.getBoundingClientRect != null) {
+          var rect = element.getBoundingClientRect();
+          width = Math.ceil(rect.right - rect.left);
+        } else {
+          width = elem.offsetWidth;
+        }
+        return width;
+    }-*/;
+
+    public static native int getRequiredHeight(
+            com.google.gwt.dom.client.Element element)
+    /*-{
+        var height;
+        if (element.getBoundingClientRect != null) {
+          var rect = element.getBoundingClientRect();
+          height = Math.ceil(rect.bottom - rect.top);
+        } else {
+          height = elem.offsetHeight;
+        }
+        return height;
+    }-*/;
+
+    public static int getRequiredWidth(Widget widget) {
+        return getRequiredWidth(widget.getElement());
+    }
+
+    public static int getRequiredHeight(Widget widget) {
+        return getRequiredHeight(widget.getElement());
+    }
+
 }
index 86b88a40b7b43c5776fdad8afe527dc869658fd6..3e8c73ad28fef7a5340f58f4736f2d03fccf460e 100644 (file)
@@ -877,7 +877,8 @@ public class IFilterSelect extends Composite implements Paintable, Field,
              * div so the popupopener won't wrap to the next line and also so
              * the size of the combobox won't change over time.
              */
-            int w = tb.getOffsetWidth() + popupOpener.getOffsetWidth();
+            int w = Util.getRequiredWidth(tb)
+                    + Util.getRequiredWidth(popupOpener);
             if (suggestionPopupMinWidth > w) {
                 setTextboxWidth(suggestionPopupMinWidth);
                 w = suggestionPopupMinWidth;
index a6700531d73aa82334bfae2eba45ebf39f181298..6836c592707842c123876d6963f0f78bbf478d73 100644 (file)
@@ -189,8 +189,8 @@ public class ChildComponentContainer extends Panel {
          * Widget wrapper includes margin which the widget offsetWidth/Height
          * does not include
          */
-        int w = getRequiredWidth(widgetDIV);
-        int h = getRequiredHeight(widgetDIV);
+        int w = Util.getRequiredWidth(widgetDIV);
+        int h = Util.getRequiredHeight(widgetDIV);
 
         widgetSize.setWidth(w);
         widgetSize.setHeight(h);
@@ -200,32 +200,6 @@ public class ChildComponentContainer extends Panel {
 
     }
 
-    public static native int getRequiredWidth(
-            com.google.gwt.dom.client.Element element)
-    /*-{
-        var width;
-        if (element.getBoundingClientRect != null) {
-          var rect = element.getBoundingClientRect();
-          width = Math.ceil(rect.right - rect.left);
-        } else {
-          width = elem.offsetWidth;
-        }
-        return width;
-    }-*/;
-
-    public static native int getRequiredHeight(
-            com.google.gwt.dom.client.Element element)
-    /*-{
-        var height;
-        if (element.getBoundingClientRect != null) {
-          var rect = element.getBoundingClientRect();
-          height = Math.ceil(rect.bottom - rect.top);
-        } else {
-          height = elem.offsetHeight;
-        }
-        return height;
-    }-*/;
-
     public void setMarginLeft(int marginLeft) {
         containerMarginLeft = marginLeft;
         getElement().getStyle().setPropertyPx("paddingLeft", marginLeft);