From 9a602ddcc76de4e3a92088ab958e32b7a2dd1c27 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Fri, 5 Dec 2008 10:34:30 +0000 Subject: [PATCH] Fix for #2253 - Use getBoundingClientRect() for measuring elements when available. svn changeset:6090/svn branch:trunk --- .../ui/layout/ChildComponentContainer.java | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) 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 1527cf38d5..a6700531d7 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,9 @@ public class ChildComponentContainer extends Panel { * Widget wrapper includes margin which the widget offsetWidth/Height * does not include */ - int w = widgetDIV.getOffsetWidth(); - int h = widgetDIV.getOffsetHeight(); + int w = getRequiredWidth(widgetDIV); + int h = getRequiredHeight(widgetDIV); + widgetSize.setWidth(w); widgetSize.setHeight(h); @@ -199,6 +200,32 @@ 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