From c8722ea39b6ff8dc424d6dcc65bd71aea086b7fc Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Fri, 5 Dec 2008 11:14:26 +0000 Subject: [PATCH] Fix for #2253 - Use getBoundingClientRect() for measuring elements when available. svn changeset:6093/svn branch:trunk --- .../toolkit/terminal/gwt/client/Util.java | 34 +++++++++++++++++++ .../terminal/gwt/client/ui/IFilterSelect.java | 3 +- .../ui/layout/ChildComponentContainer.java | 30 ++-------------- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Util.java b/src/com/itmill/toolkit/terminal/gwt/client/Util.java index 9f208568df..fc33e2259b 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/Util.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/Util.java @@ -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()); + } + } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java index 86b88a40b7..3e8c73ad28 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IFilterSelect.java @@ -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; diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java index a6700531d7..6836c59270 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/layout/ChildComponentContainer.java @@ -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); -- 2.39.5