diff options
author | Artur Signell <artur.signell@itmill.com> | 2012-08-10 14:09:57 +0000 |
---|---|---|
committer | Artur Signell <artur.signell@itmill.com> | 2012-08-10 14:09:57 +0000 |
commit | c8f35e5aef1619512aee438c155b417fa7bb48ba (patch) | |
tree | 8e186bba83472f31edc29c169eec166178c1e932 /src/com | |
parent | 15b7d21c5ed5d6f79b9eb091948392586bdb9e70 (diff) | |
download | vaadin-framework-c8f35e5aef1619512aee438c155b417fa7bb48ba.tar.gz vaadin-framework-c8f35e5aef1619512aee438c155b417fa7bb48ba.zip |
Disabled shim iframe for all but IE8+ (#9284, #6219)
The shim iframe causes crashes in IE6 and does not really help in Opera/Safari/Firefox.
svn changeset:24146/svn branch:6.8
Diffstat (limited to 'src/com')
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ui/VOverlay.java | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java b/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java index 60829f1cc8..92f2d6540b 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java @@ -244,7 +244,7 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { } private IFrameElement getShimElement() { - if (shimElement == null) { + if (shimElement == null && useShimIframe()) { shimElement = Document.get().createIFrameElement(); // Insert shim iframe before the main overlay element. It does not @@ -463,8 +463,10 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { DOM.setStyleAttribute(shadow, "display", progress < 0.9 ? "none" : ""); } - updatePositionAndSize((Element) Element.as(getShimElement()), - positionAndSize); + if (useShimIframe()) { + updatePositionAndSize((Element) Element.as(getShimElement()), + positionAndSize); + } // Opera fix, part 2 (ticket #2704) if (BrowserInfo.get().isOpera() && isShadowEnabled()) { @@ -488,13 +490,25 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> { RootPanel.get().getElement().insertBefore(shadow, getElement()); sinkShadowEvents(); } - if (!isShimAttached()) { + if (useShimIframe() && !isShimAttached()) { RootPanel.get().getElement() .insertBefore(shimElement, getElement()); } } + /** + * Returns true if we should add a shim iframe below the overlay to deal + * with zindex issues with PDFs and applets. Can be overriden to disable + * shim iframes if they are not needed. + * + * @return true if a shim iframe should be added, false otherwise + */ + protected boolean useShimIframe() { + BrowserInfo info = BrowserInfo.get(); + return info.isIE() && info.isBrowserVersionNewerOrEqual(8, 0); + } + private void updatePositionAndSize(Element e, PositionAndSize positionAndSize) { e.getStyle().setLeft(positionAndSize.getLeft(), Unit.PX); |