From: John Ahlroos Date: Tue, 15 Jan 2013 12:56:45 +0000 (+0200) Subject: Fixes issue where Tabsheet does not resize when the content of the tabsheet changes... X-Git-Tag: 7.0.0.rc1~5^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fchanges%2F51%2F651%2F3;p=vaadin-framework.git Fixes issue where Tabsheet does not resize when the content of the tabsheet changes after the tabsheet has rendered #10697 Change-Id: I6b0423e011c8241df4755b9bad7388d0194fb386 --- diff --git a/client/src/com/vaadin/client/LayoutManager.java b/client/src/com/vaadin/client/LayoutManager.java index d7dce82b65..094afc5f01 100644 --- a/client/src/com/vaadin/client/LayoutManager.java +++ b/client/src/com/vaadin/client/LayoutManager.java @@ -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; diff --git a/client/src/com/vaadin/client/ui/orderedlayout/Slot.java b/client/src/com/vaadin/client/ui/orderedlayout/Slot.java index 8cec3f755a..795b724292 100644 --- a/client/src/com/vaadin/client/ui/orderedlayout/Slot.java +++ b/client/src/com/vaadin/client/ui/orderedlayout/Slot.java @@ -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); - } } }