aboutsummaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorArtur Signell <artur.signell@itmill.com>2012-08-10 14:09:57 +0000
committerArtur Signell <artur.signell@itmill.com>2012-08-10 14:09:57 +0000
commitc8f35e5aef1619512aee438c155b417fa7bb48ba (patch)
tree8e186bba83472f31edc29c169eec166178c1e932 /src/com
parent15b7d21c5ed5d6f79b9eb091948392586bdb9e70 (diff)
downloadvaadin-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.java22
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);