From 8c2dc966215e5b0d3e8a3ce338e1cc1fd9b68465 Mon Sep 17 00:00:00 2001
From: Artur Signell <artur@vaadin.com>
Date: Tue, 22 Nov 2011 12:57:54 +0200
Subject: #7913 Removed IE7 related stuff

---
 .../vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml   |   6 -
 .../vaadin/terminal/gwt/client/BrowserInfo.java    |   4 -
 .../terminal/gwt/client/HistoryImplIEVaadin.java   | 192 ---------------------
 src/com/vaadin/terminal/gwt/client/Util.java       |  80 +--------
 .../vaadin/terminal/gwt/client/ui/VFormLayout.java |   1 +
 src/com/vaadin/terminal/gwt/client/ui/VLabel.java  |   4 +-
 .../vaadin/terminal/gwt/client/ui/VMenuBar.java    |  21 ---
 .../terminal/gwt/client/ui/VNativeButton.java      |  40 -----
 .../vaadin/terminal/gwt/client/ui/VOverlay.java    |  28 +--
 src/com/vaadin/terminal/gwt/client/ui/VPanel.java  |   5 -
 .../terminal/gwt/client/ui/VScrollTable.java       |  25 ++-
 .../vaadin/terminal/gwt/client/ui/VSplitPanel.java |  11 --
 .../vaadin/terminal/gwt/client/ui/VTabsheet.java   |  27 ---
 .../vaadin/terminal/gwt/client/ui/VTreeTable.java  |   2 +-
 src/com/vaadin/terminal/gwt/client/ui/VView.java   |  15 +-
 15 files changed, 29 insertions(+), 432 deletions(-)
 delete mode 100644 src/com/vaadin/terminal/gwt/client/HistoryImplIEVaadin.java

(limited to 'src')

diff --git a/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml b/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml
index bdbcc75222..e6b6c0005a 100644
--- a/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml
+++ b/src/com/vaadin/terminal/gwt/DefaultWidgetSet.gwt.xml
@@ -18,12 +18,6 @@
 		<when-type-is class="com.google.gwt.core.client.impl.SchedulerImpl" />
 	</replace-with>
 
-	<!-- Use our own history impl for IE7 to workaround #2931. -->
-	<replace-with class="com.vaadin.terminal.gwt.client.HistoryImplIEVaadin">
-		<when-type-is class="com.google.gwt.user.client.impl.HistoryImpl" />
-		<when-property-is name="user.agent" value="ie6" />
-	</replace-with>
-
 	<generate-with
 		class="com.vaadin.terminal.gwt.widgetsetutils.EagerWidgetMapGenerator">
 		<when-type-is class="com.vaadin.terminal.gwt.client.WidgetMap" />
diff --git a/src/com/vaadin/terminal/gwt/client/BrowserInfo.java b/src/com/vaadin/terminal/gwt/client/BrowserInfo.java
index daa62b4495..d10ddd4368 100644
--- a/src/com/vaadin/terminal/gwt/client/BrowserInfo.java
+++ b/src/com/vaadin/terminal/gwt/client/BrowserInfo.java
@@ -192,10 +192,6 @@ public class BrowserInfo {
         return isSafari() && browserDetails.getBrowserMajorVersion() == 4;
     }
 
-    public boolean isIE7() {
-        return isIE() && browserDetails.getBrowserMajorVersion() == 7;
-    }
-
     public boolean isIE8() {
         return isIE() && browserDetails.getBrowserMajorVersion() == 8;
     }
diff --git a/src/com/vaadin/terminal/gwt/client/HistoryImplIEVaadin.java b/src/com/vaadin/terminal/gwt/client/HistoryImplIEVaadin.java
deleted file mode 100644
index f0ad3d561a..0000000000
--- a/src/com/vaadin/terminal/gwt/client/HistoryImplIEVaadin.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-@ITMillApache2LicenseForJavaFiles@
- */
-/*
- * Copyright 2008 Google Inc.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.vaadin.terminal.gwt.client;
-
-import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Element;
-import com.google.gwt.user.client.impl.HistoryImpl;
-
-/**
- * A slightly modified version of GWT's HistoryImplIE6 to bypass bug #2931. Also
- * combined with HistoryImplFrame.
- * 
- * This class should be removed if GWT issue 3890 gets resolved. (Also remember
- * to removed deferred binding rule from .gwt.xml file).
- */
-public class HistoryImplIEVaadin extends HistoryImpl {
-
-    private static native Element findHistoryFrame()
-    /*-{
-        return $doc.getElementById('__gwt_historyFrame');
-    }-*/;
-
-    private static native Element getTokenElement(Element historyFrame)
-    /*-{
-       // Initialize the history iframe.  If '__gwt_historyToken' already exists, then
-       // we're probably backing into the app, so _don't_ set the iframe's location.
-       if (historyFrame.contentWindow) {
-           var doc = historyFrame.contentWindow.document;
-           return doc.getElementById('__gwt_historyToken');
-       }
-    }-*/;
-
-    protected Element historyFrame;
-
-    @Override
-    protected final void nativeUpdate(String historyToken) {
-        /*
-         * Must update the location hash since it isn't already correct.
-         */
-        updateHash(historyToken);
-        navigateFrame(historyToken);
-    }
-
-    @Override
-    protected final void nativeUpdateOnEvent(String historyToken) {
-        updateHash(historyToken);
-    }
-
-    /**
-     * Sanitizes an untrusted string to be used in an HTML context. NOTE: This
-     * method of escaping strings should only be used on Internet Explorer.
-     * 
-     * @param maybeHtml
-     *            untrusted string that may contain html
-     * @return sanitized string
-     */
-    private static String escapeHtml(String maybeHtml) {
-        final Element div = DOM.createDiv();
-        DOM.setInnerText(div, maybeHtml);
-        return DOM.getInnerHTML(div);
-    }
-
-    /**
-     * For IE6, reading from $wnd.location.hash drops part of the fragment if
-     * the fragment contains a '?'. To avoid this bug, we use location.href
-     * instead.
-     */
-    private static native String getLocationHash()
-    /*-{
-       var href = $wnd.location.href;
-       var hashLoc = href.lastIndexOf("#");
-       return (hashLoc > 0) ? href.substring(hashLoc) : "";
-    }-*/;
-
-    @Override
-    public boolean init() {
-        historyFrame = findHistoryFrame();
-        if (historyFrame == null) {
-            return false;
-        }
-
-        initHistoryToken();
-
-        // Initialize the history iframe. If a token element already exists,
-        // then
-        // we're probably backing into the app, so _don't_ create a new item.
-        Element tokenElement = getTokenElement(historyFrame);
-        if (tokenElement != null) {
-            setToken(getTokenElementContent(tokenElement));
-        } else {
-            navigateFrame(getToken());
-        }
-
-        injectGlobalHandler();
-
-        initUrlCheckTimer();
-        return true;
-    }
-
-    protected native String getTokenElementContent(Element tokenElement)
-    /*-{
-        return tokenElement.innerText;
-    }-*/;
-
-    protected native void initHistoryToken()
-    /*-{
-       // Assume an empty token.
-       var token = '';
-       // Get the initial token from the url's hash component.
-       var hash = @com.vaadin.terminal.gwt.client.HistoryImplIEVaadin::getLocationHash()();
-       if (hash.length > 0) {
-         try {
-           token = this.@com.google.gwt.user.client.impl.HistoryImpl::decodeFragment(Ljava/lang/String;)(hash.substring(1));
-         } catch (e) {
-           // Clear the bad hash (this can't have been a valid token).
-           $wnd.location.hash = '';
-         }
-       }
-       @com.google.gwt.user.client.impl.HistoryImpl::setToken(Ljava/lang/String;)(token);
-     }-*/;
-
-    protected native void injectGlobalHandler()
-    /*-{
-       var historyImplRef = this;
-
-       $wnd.__gwt_onHistoryLoad = function(token) {
-         historyImplRef.@com.google.gwt.user.client.impl.HistoryImpl::newItemOnEvent(Ljava/lang/String;)(token);
-       };
-     }-*/;
-
-    protected native void navigateFrame(String token)
-    /*-{
-       var escaped = @com.vaadin.terminal.gwt.client.HistoryImplIEVaadin::escapeHtml(Ljava/lang/String;)(token);
-       var doc = this.@com.vaadin.terminal.gwt.client.HistoryImplIEVaadin::historyFrame.contentWindow.document;
-       doc.open();
-       doc.write('<html><body onload="if(parent.__gwt_onHistoryLoad)parent.__gwt_onHistoryLoad(__gwt_historyToken.innerText)"><div id="__gwt_historyToken">' + escaped + '</div></body></html>');
-       doc.close();
-     }-*/;
-
-    protected native void updateHash(String token)
-    /*-{
-       $wnd.location.hash = this.@com.google.gwt.user.client.impl.HistoryImpl::encodeFragment(Ljava/lang/String;)(token);
-     }-*/;
-
-    private native void initUrlCheckTimer()
-    /*-{
-       // This is the URL check timer.  It detects when an unexpected change
-       // occurs in the document's URL (e.g. when the user enters one manually
-       // or selects a 'favorite', but only the #hash part changes).  When this
-       // occurs, we _must_ reload the page.  This is because IE has a really
-       // nasty bug that totally mangles its history stack and causes the location
-       // bar in the UI to stop working under these circumstances.
-       var historyImplRef = this;
-       var urlChecker = function() {
-         $wnd.setTimeout(urlChecker, 250);
-         var hash = @com.vaadin.terminal.gwt.client.HistoryImplIEVaadin::getLocationHash()();
-         if (hash.length > 0) {
-           var token = '';
-           try {
-             token = historyImplRef.@com.google.gwt.user.client.impl.HistoryImpl::decodeFragment(Ljava/lang/String;)(hash.substring(1));
-           } catch (e) {
-             // If there's a bad hash, always reload. This could only happen if
-             // if someone entered or linked to a bad url.
-             $wnd.location.reload();
-           }
-
-           var historyToken = @com.google.gwt.user.client.impl.HistoryImpl::getToken()();
-           if (token != historyToken) {
-             $wnd.location.reload();
-           }
-         }
-       };
-       urlChecker();
-     }-*/;
-
-}
diff --git a/src/com/vaadin/terminal/gwt/client/Util.java b/src/com/vaadin/terminal/gwt/client/Util.java
index fd014bffe6..3601f385b1 100644
--- a/src/com/vaadin/terminal/gwt/client/Util.java
+++ b/src/com/vaadin/terminal/gwt/client/Util.java
@@ -13,7 +13,6 @@ import java.util.Set;
 
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.dom.client.DivElement;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.dom.client.Node;
@@ -195,36 +194,6 @@ public class Util {
         return null;
     }
 
-    /**
-     * Detects if current browser is IE.
-     * 
-     * @deprecated use BrowserInfo class instead
-     * 
-     * @return true if IE
-     */
-    @Deprecated
-    public static boolean isIE() {
-        return BrowserInfo.get().isIE();
-    }
-
-    /**
-     * @deprecated use BrowserInfo class instead
-     * @return
-     */
-    @Deprecated
-    public static boolean isIE7() {
-        return BrowserInfo.get().isIE7();
-    }
-
-    /**
-     * @deprecated use BrowserInfo class instead
-     * @return
-     */
-    @Deprecated
-    public static boolean isFF2() {
-        return BrowserInfo.get().isFF2();
-    }
-
     private static final Element escapeHtmlHelper = DOM.createDiv();
 
     /**
@@ -236,8 +205,8 @@ public class Util {
     public static String escapeHTML(String html) {
         DOM.setInnerText(escapeHtmlHelper, html);
         String escapedText = DOM.getInnerHTML(escapeHtmlHelper);
-        if (BrowserInfo.get().isIE() && BrowserInfo.get().getIEVersion() < 9) {
-            // #7478 IE7-IE8 "incorrectly" returns "<br>" for newlines set using
+        if (BrowserInfo.get().isIE8()) {
+            // #7478 IE8 "incorrectly" returns "<br>" for newlines set using
             // setInnerText. The same for " " which is converted to "&nbsp;"
             escapedText = escapedText.replaceAll("<(BR|br)>", "\n");
             escapedText = escapedText.replaceAll("&nbsp;", " ");
@@ -317,23 +286,19 @@ public class Util {
 
             int offsetWidth = element.getOffsetWidth();
             int offsetHeight = element.getOffsetHeight();
-            if (!BrowserInfo.get().isIE7()) {
-                if (offsetHeight < 1) {
-                    offsetHeight = 1;
-                }
-                if (offsetWidth < 1) {
-                    offsetWidth = 10;
-                }
-                element.getStyle().setPropertyPx("height", offsetHeight);
+            if (offsetHeight < 1) {
+                offsetHeight = 1;
             }
+            if (offsetWidth < 1) {
+                offsetWidth = 10;
+            }
+            element.getStyle().setPropertyPx("height", offsetHeight);
             element.getStyle().setPropertyPx("width", offsetWidth);
 
             borders = element.getOffsetWidth() - element.getClientWidth();
 
             element.getStyle().setProperty("width", width);
-            if (!BrowserInfo.get().isIE7()) {
-                element.getStyle().setProperty("height", height);
-            }
+            element.getStyle().setProperty("height", height);
         } else {
             borders = element.getOffsetWidth()
                     - element.getPropertyInt("clientWidth");
@@ -757,33 +722,6 @@ public class Util {
 
      }-*/;
 
-    /**
-     * IE7 sometimes "forgets" to render content. This function runs a hack to
-     * workaround the bug if needed. This happens easily in framset. See #3295.
-     */
-    public static void runIE7ZeroSizedBodyFix() {
-        if (BrowserInfo.get().isIE7()) {
-            int offsetWidth = RootPanel.getBodyElement().getOffsetWidth();
-            if (offsetWidth == 0) {
-                shakeBodyElement();
-            }
-        }
-    }
-
-    /**
-     * Does some very small adjustments to body element. We need this just to
-     * overcome some IE bugs.
-     */
-    public static void shakeBodyElement() {
-        final DivElement shaker = Document.get().createDivElement();
-        RootPanel.getBodyElement().insertBefore(shaker,
-                RootPanel.getBodyElement().getFirstChildElement());
-        shaker.getStyle().setPropertyPx("height", 0);
-        shaker.setInnerHTML("&nbsp;");
-        RootPanel.getBodyElement().removeChild(shaker);
-
-    }
-
     /**
      * Locates the child component of <literal>parent</literal> which contains
      * the element <literal>element</literal>. The child component is also
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java b/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java
index f4691a3f27..378286381f 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java
@@ -404,6 +404,7 @@ public class VFormLayout extends SimplePanel implements Container {
             // Workaround for IE weirdness, sometimes returns bad height in some
             // circumstances when Caption is empty. See #1444
             // IE7 bugs more often. I wonder what happens when IE8 arrives...
+            // FIXME: This could be unnecessary for IE8+
             if (BrowserInfo.get().isIE()) {
                 if (isEmpty) {
                     setHeight("0px");
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VLabel.java b/src/com/vaadin/terminal/gwt/client/ui/VLabel.java
index 76ea1297ea..05017f22e8 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VLabel.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VLabel.java
@@ -124,8 +124,8 @@ public class VLabel extends HTML implements Paintable {
 
     @Override
     public void setText(String text) {
-        if (BrowserInfo.get().isIE() && BrowserInfo.get().getIEVersion() < 9) {
-            // #3983 - IE7,IE8 incorrectly replaces \n with <br> so we do the
+        if (BrowserInfo.get().isIE8()) {
+            // #3983 - IE8 incorrectly replaces \n with <br> so we do the
             // escaping manually and set as HTML
             super.setHTML(Util.escapeHTML(text));
         } else {
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java
index 8b53fb01c1..5081734c7e 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VMenuBar.java
@@ -714,27 +714,6 @@ public class VMenuBar extends SimpleFocusablePanel implements Paintable,
 
         popup.setPopupPosition(left, top);
 
-        // IE7 really tests one's patience sometimes
-        // Part of a fix to correct #3850
-        if (BrowserInfo.get().isIE7()) {
-            popup.getElement().getStyle().setProperty("zoom", "");
-            Scheduler.get().scheduleDeferred(new Command() {
-                public void execute() {
-                    if (popup == null) {
-                        // The child menu can be hidden before this command is
-                        // run.
-                        return;
-                    }
-
-                    if (popup.getElement().getStyle().getProperty("width") == null
-                            || popup.getElement().getStyle()
-                                    .getProperty("width") == "") {
-                        popup.setWidth(popup.getOffsetWidth() + "px");
-                    }
-                    popup.getElement().getStyle().setProperty("zoom", "1");
-                }
-            });
-        }
     }
 
     private int adjustPopupHeight(int top, final int shadowSpace) {
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VNativeButton.java b/src/com/vaadin/terminal/gwt/client/ui/VNativeButton.java
index 458c43024c..d295ec86ee 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VNativeButton.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VNativeButton.java
@@ -4,7 +4,6 @@
 
 package com.vaadin.terminal.gwt.client.ui;
 
-import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.dom.client.BlurEvent;
 import com.google.gwt.event.dom.client.BlurHandler;
@@ -13,7 +12,6 @@ import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.dom.client.FocusEvent;
 import com.google.gwt.event.dom.client.FocusHandler;
 import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.Button;
@@ -99,13 +97,6 @@ public class VNativeButton extends Button implements Paintable, ClickHandler,
             }
             getElement().insertBefore(errorIndicatorElement, captionElement);
 
-            // Fix for IE
-            // TODO This was originally for IE6 & IE7 and might not be needed
-            // any more
-            if (BrowserInfo.get().isIE()) {
-                errorIndicatorElement.setInnerText(" ");
-            }
-
         } else if (errorIndicatorElement != null) {
             getElement().removeChild(errorIndicatorElement);
             errorIndicatorElement = null;
@@ -124,21 +115,6 @@ public class VNativeButton extends Button implements Paintable, ClickHandler,
             }
         }
 
-        if (BrowserInfo.get().isIE7()) {
-            /*
-             * Workaround for IE7 size calculation issues. Deferred because of
-             * issues with a button with an icon using the reindeer theme
-             */
-            if (width.equals("")) {
-                Scheduler.get().scheduleDeferred(new Command() {
-
-                    public void execute() {
-                        setWidth("");
-                        setWidth(getOffsetWidth() + "px");
-                    }
-                });
-            }
-        }
     }
 
     @Override
@@ -172,24 +148,8 @@ public class VNativeButton extends Button implements Paintable, ClickHandler,
 
     @Override
     public void setWidth(String width) {
-        /* Workaround for IE7 button size part 1 (#2014) */
-        if (BrowserInfo.get().isIE7() && this.width != null) {
-            if (this.width.equals(width)) {
-                return;
-            }
-
-            if (width == null) {
-                width = "";
-            }
-        }
-
         this.width = width;
         super.setWidth(width);
-
-        /* Workaround for IE7 button size part 2 (#2014) */
-        if (BrowserInfo.get().isIE7()) {
-            super.setWidth(width);
-        }
     }
 
     /*
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java b/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java
index 0957b6270f..260aa1123e 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VOverlay.java
@@ -15,7 +15,6 @@ import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.PopupPanel;
 import com.google.gwt.user.client.ui.RootPanel;
 import com.vaadin.terminal.gwt.client.BrowserInfo;
-import com.vaadin.terminal.gwt.client.Util;
 
 /**
  * In Vaadin UI this Overlay should always be used for all elements that
@@ -162,30 +161,18 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> {
 
     private static int adjustByRelativeTopBodyMargin() {
         if (topFix == -1) {
-            topFix = detectRelativeBodyFixes("top", BrowserInfo.get().isIE7());
+            topFix = detectRelativeBodyFixes("top");
         }
         return topFix;
     }
 
-    private native static int detectRelativeBodyFixes(String axis,
-            boolean removeClientLeftOrTop)
+    private native static int detectRelativeBodyFixes(String axis)
     /*-{
         try {
             var b = $wnd.document.body;
             var cstyle = b.currentStyle ? b.currentStyle : getComputedStyle(b);
             if(cstyle && cstyle.position == 'relative') {
-                var offset = b.getBoundingClientRect()[axis];
-                if (removeClientLeftOrTop) {
-                    // IE7 include the top left border of the client area into the boundingClientRect
-                    var clientTopOrLeft = 0;
-                    if (axis == "top")
-                        clientTopOrLeft = $wnd.document.documentElement.clientTop;
-                    else
-                        clientTopOrLeft = $wnd.document.documentElement.clientLeft;
-
-                    offset -= clientTopOrLeft;
-                }
-                return offset;
+                return b.getBoundingClientRect()[axis];
             }
         } catch(e){}
         return 0;
@@ -193,7 +180,7 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> {
 
     private static int adjustByRelativeLeftBodyMargin() {
         if (leftFix == -1) {
-            leftFix = detectRelativeBodyFixes("left", BrowserInfo.get().isIE7());
+            leftFix = detectRelativeBodyFixes("left");
 
         }
         return leftFix;
@@ -210,13 +197,6 @@ public class VOverlay extends PopupPanel implements CloseHandler<PopupPanel> {
                 updateShadowSizeAndPosition(1.0);
             }
         }
-        Util.runIE7ZeroSizedBodyFix();
-    }
-
-    @Override
-    public void hide(boolean autoClosed) {
-        super.hide(autoClosed);
-        Util.runIE7ZeroSizedBodyFix();
     }
 
     @Override
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VPanel.java b/src/com/vaadin/terminal/gwt/client/ui/VPanel.java
index 4611f6e4ab..0fcdb66568 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VPanel.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VPanel.java
@@ -337,11 +337,6 @@ public class VPanel extends SimplePanel implements Container,
                 width = captionWidth;
             }
 
-            if (BrowserInfo.get().isIE7()) {
-                Util.setWidthExcludingPaddingAndBorder(captionNode, width
-                        - getCaptionMarginLeft(), 26, false);
-            }
-
             super.setWidth(width + "px");
         }
 
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
index c42567f9b1..850e481cd5 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
@@ -2749,8 +2749,7 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
 
                     int hw = captionContainer.getOffsetWidth()
                             + scrollBody.getCellExtraWidth();
-                    if (BrowserInfo.get().isGecko()
-                            || BrowserInfo.get().isIE7()) {
+                    if (BrowserInfo.get().isGecko()) {
                         hw += sortIndicator.getOffsetWidth();
                     }
                     if (columnIndex < 0) {
@@ -5924,19 +5923,15 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
      */
     private int getContentAreaBorderHeight() {
         if (contentAreaBorderHeight < 0) {
-            if (BrowserInfo.get().isIE7()) {
-                contentAreaBorderHeight = Util
-                        .measureVerticalBorder(scrollBodyPanel.getElement());
-            } else {
-                DOM.setStyleAttribute(scrollBodyPanel.getElement(), "overflow",
-                        "hidden");
-                int oh = scrollBodyPanel.getOffsetHeight();
-                int ch = scrollBodyPanel.getElement().getPropertyInt(
-                        "clientHeight");
-                contentAreaBorderHeight = oh - ch;
-                DOM.setStyleAttribute(scrollBodyPanel.getElement(), "overflow",
-                        "auto");
-            }
+
+            DOM.setStyleAttribute(scrollBodyPanel.getElement(), "overflow",
+                    "hidden");
+            int oh = scrollBodyPanel.getOffsetHeight();
+            int ch = scrollBodyPanel.getElement()
+                    .getPropertyInt("clientHeight");
+            contentAreaBorderHeight = oh - ch;
+            DOM.setStyleAttribute(scrollBodyPanel.getElement(), "overflow",
+                    "auto");
         }
         return contentAreaBorderHeight;
     }
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java b/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java
index 6157079711..2841099198 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VSplitPanel.java
@@ -6,7 +6,6 @@ package com.vaadin.terminal.gwt.client.ui;
 
 import java.util.Set;
 
-import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.dom.client.Node;
 import com.google.gwt.event.dom.client.DomEvent.Type;
@@ -20,7 +19,6 @@ import com.google.gwt.event.dom.client.TouchStartEvent;
 import com.google.gwt.event.dom.client.TouchStartHandler;
 import com.google.gwt.event.shared.EventHandler;
 import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
@@ -306,15 +304,6 @@ public class VSplitPanel extends ComplexPanel implements Container,
 
         renderInformation.updateSize(getElement());
 
-        if (BrowserInfo.get().isIE7()) {
-            // Part III of IE7 hack
-            Scheduler.get().scheduleDeferred(new Command() {
-                public void execute() {
-                    iLayout();
-                }
-            });
-        }
-
         // This is needed at least for cases like #3458 to take
         // appearing/disappearing scrollbars into account.
         client.runDescendentsLayout(this);
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java b/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java
index 016a411447..049e81e59a 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VTabsheet.java
@@ -238,33 +238,6 @@ public class VTabsheet extends VTabsheetBase {
             return tab;
         }
 
-        @Override
-        public void setWidth(String width) {
-            super.setWidth(width);
-            if (BrowserInfo.get().isIE7()) {
-                /*
-                 * IE7 apparently has problems with calculating width for
-                 * floated elements inside a DIV with padding. Set the width
-                 * explicitly for the caption.
-                 */
-                fixTextWidth();
-            }
-        }
-
-        private void fixTextWidth() {
-            Element captionText = getTextElement();
-            if (captionText == null) {
-                return;
-            }
-
-            int captionWidth = Util.getRequiredWidth(captionText);
-            int scrollWidth = captionText.getScrollWidth();
-            if (scrollWidth > captionWidth) {
-                captionWidth = scrollWidth;
-            }
-            captionText.getStyle().setPropertyPx("width", captionWidth);
-        }
-
         public void setClosable(boolean closable) {
             this.closable = closable;
             if (closable && closeButton == null) {
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java b/src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java
index 8db320b1da..bcd87da751 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java
@@ -164,7 +164,7 @@ public class VTreeTable extends VScrollTable {
 
     private boolean browserSupportsAnimation() {
         BrowserInfo bi = BrowserInfo.get();
-        return !(bi.isIE7() || bi.isSafari4());
+        return !(bi.isSafari4());
     }
 
     class VTreeTableScrollBody extends VScrollTable.VScrollTableBody {
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VView.java b/src/com/vaadin/terminal/gwt/client/ui/VView.java
index cd9f0c903c..1ac3279aab 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VView.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VView.java
@@ -476,9 +476,8 @@ public class VView extends SimplePanel implements Container, ResizeHandler,
          * browser window. Constantly recalculating the layout causes the resize
          * operation to be really slow with complex layouts.
          */
-        boolean lazy = resizeLazy
-                || (BrowserInfo.get().isIE() && BrowserInfo.get()
-                        .getIEVersion() <= 8) || BrowserInfo.get().isFF3();
+        boolean lazy = resizeLazy || BrowserInfo.get().isIE8()
+                || BrowserInfo.get().isFF3();
 
         if (lazy) {
             delayedResizeExecutor.trigger();
@@ -563,16 +562,6 @@ public class VView extends SimplePanel implements Container, ResizeHandler,
 
         @Override
         public int getWidth() {
-            int w = getRealWidth();
-            if (w < 10 && BrowserInfo.get().isIE7()) {
-                // Overcome an IE7 bug #3295
-                Util.shakeBodyElement();
-                w = getRealWidth();
-            }
-            return w;
-        }
-
-        private int getRealWidth() {
             if (connection.getConfiguration().isStandalone()) {
                 return getElement().getOffsetWidth() - getExcessWidth();
             }
-- 
cgit v1.2.3