diff options
author | Matti Tahvonen <matti.tahvonen@itmill.com> | 2009-04-03 09:13:00 +0000 |
---|---|---|
committer | Matti Tahvonen <matti.tahvonen@itmill.com> | 2009-04-03 09:13:00 +0000 |
commit | 1216fd25d6ee545db3b205369d7624d3201fba5f (patch) | |
tree | 4609c7201872392d11d4c25ab4717842b47f2450 /src/com/itmill | |
parent | f7dcedfd372eb05d68feec7bc0dc7a3e0a59d721 (diff) | |
download | vaadin-framework-1216fd25d6ee545db3b205369d7624d3201fba5f.tar.gz vaadin-framework-1216fd25d6ee545db3b205369d7624d3201fba5f.zip |
fixes #2789, fixed IE width detection failure with some layout configurations
svn changeset:7297/svn branch:6.0
Diffstat (limited to 'src/com/itmill')
-rw-r--r-- | src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java index 1e4badc439..0c22da4a1e 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java @@ -8,6 +8,8 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import com.google.gwt.dom.client.DivElement; +import com.google.gwt.dom.client.Document; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.DeferredCommand; @@ -474,13 +476,31 @@ public class IView extends SimplePanel implements Container, } private void detectExcessSize() { + // TODO define that iview cannot be themed and decorations should + // get to parent element, then get rid of this expensive and error + // prone function final String overflow = getElement().getStyle().getProperty( "overflow"); getElement().getStyle().setProperty("overflow", "hidden"); + if (BrowserInfo.get().isIE() + && getElement().getPropertyInt("clientWidth") == 0) { + // can't detect possibly themed border/padding width in some + // situations (with some layout configurations), use empty div + // to measure width properly + DivElement div = Document.get().createDivElement(); + div.setInnerHTML(" "); + div.getStyle().setProperty("overflow", "hidden"); + div.getStyle().setProperty("height", "1px"); + getElement().appendChild(div); + excessWidth = getElement().getOffsetWidth() + - div.getOffsetWidth(); + getElement().removeChild(div); + } else { + excessWidth = getElement().getOffsetWidth() + - getElement().getPropertyInt("clientWidth"); + } excessHeight = getElement().getOffsetHeight() - getElement().getPropertyInt("clientHeight"); - excessWidth = getElement().getOffsetWidth() - - getElement().getPropertyInt("clientWidth"); getElement().getStyle().setProperty("overflow", overflow); } |