aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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(" ");
+ 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);
}