summaryrefslogtreecommitdiffstats
path: root/src/com/itmill
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2009-04-03 09:13:00 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2009-04-03 09:13:00 +0000
commit1216fd25d6ee545db3b205369d7624d3201fba5f (patch)
tree4609c7201872392d11d4c25ab4717842b47f2450 /src/com/itmill
parentf7dcedfd372eb05d68feec7bc0dc7a3e0a59d721 (diff)
downloadvaadin-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.java24
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("&nbsp;");
+ 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);
}