]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixes issue where Tabsheet does not resize when the content of the tabsheet changes... 51/651/3
authorJohn Ahlroos <john@vaadin.com>
Tue, 15 Jan 2013 12:56:45 +0000 (14:56 +0200)
committerJohn Ahlroos <john@vaadin.com>
Tue, 15 Jan 2013 14:42:06 +0000 (16:42 +0200)
Change-Id: I6b0423e011c8241df4755b9bad7388d0194fb386

client/src/com/vaadin/client/LayoutManager.java
client/src/com/vaadin/client/ui/orderedlayout/Slot.java

index d7dce82b6536dd4ee924e4e3c6f85da7fee17b22..094afc5f0114cae974d38c9e4d5f7ee0adb37f6e 100644 (file)
@@ -28,6 +28,7 @@ import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style;
 import com.google.gwt.dom.client.Style.Overflow;
 import com.google.gwt.user.client.Timer;
+import com.google.gwt.user.client.ui.RootPanel;
 import com.vaadin.client.MeasuredSize.MeasureResult;
 import com.vaadin.client.ui.ManagedLayout;
 import com.vaadin.client.ui.PostLayoutListener;
@@ -279,6 +280,16 @@ public class LayoutManager {
             Duration passDuration = new Duration();
             passes++;
 
+            /*
+             * Fixes IE8 issues where IE8 sometimes forgets to update the size
+             * of the containing element. To force a reflow by modifying the
+             * magical zoom property.
+             */
+            if (BrowserInfo.get().isIE8()) {
+                int zoom = RootPanel.get().getElement().getPropertyInt("zoom");
+                RootPanel.get().getElement().setPropertyInt("zoom", zoom);
+            }
+
             int measuredConnectorCount = measureConnectors(
                     currentDependencyTree, everythingNeedsMeasure);
             everythingNeedsMeasure = false;
index 8cec3f755a355aaf2428dac6193b0a3a0ce1b8b9..795b72429254dc852d12135d05fac216c1af363e 100644 (file)
@@ -18,17 +18,14 @@ package com.vaadin.client.ui.orderedlayout;
 
 import java.util.List;
 
-import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.UIObject;
 import com.google.gwt.user.client.ui.Widget;
-import com.vaadin.client.BrowserInfo;
 import com.vaadin.client.LayoutManager;
 import com.vaadin.client.StyleConstants;
-import com.vaadin.client.ui.layout.ElementResizeEvent;
 import com.vaadin.client.ui.layout.ElementResizeListener;
 import com.vaadin.shared.ui.AlignmentInfo;
 
@@ -95,24 +92,6 @@ public final class Slot extends SimplePanel {
 
     private ElementResizeListener spacingResizeListener;
 
-    /*
-     * IE8 forgets to re-render the slot if the widget inside the slot changes
-     * size. To force IE to re-render we apply the well know zoom property to
-     * the widget which triggers a re-render of the slot element.
-     */
-    private static final ElementResizeListener ie8ElementRefresherListener = new ElementResizeListener() {
-
-        @Override
-        public void onElementResize(final ElementResizeEvent e) {
-            Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
-                @Override
-                public void execute() {
-                    int zoom = e.getElement().getPropertyInt("zoom");
-                    e.getElement().setPropertyInt("zoom", zoom);
-                }
-            });
-        }
-    };
 
     // Caption is placed after component unless there is some part which
     // moves it above.
@@ -182,11 +161,6 @@ public final class Slot extends SimplePanel {
                 lm.addElementResizeListener(getSpacingElement(),
                         spacingResizeListener);
             }
-
-            if (BrowserInfo.get().isIE8()) {
-                lm.addElementResizeListener(getWidget().getElement(),
-                        ie8ElementRefresherListener);
-            }
         }
     }
 
@@ -208,11 +182,6 @@ public final class Slot extends SimplePanel {
                 lm.removeElementResizeListener(getSpacingElement(),
                         spacingResizeListener);
             }
-
-            if (BrowserInfo.get().isIE8()) {
-                lm.removeElementResizeListener(getWidget().getElement(),
-                        ie8ElementRefresherListener);
-            }
         }
     }