diff --git a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Shell.java index 1436011d96..24bcc9dcbb 100644 --- a/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Shell.java +++ b/bundles/org.eclipse.rap.rwt/src/org/eclipse/swt/widgets/Shell.java @@ -985,6 +985,11 @@ public void removeShellListener( ShellListener listener ) { removeListener( SWT.Activate, listener ); removeListener( SWT.Deactivate, listener ); } + + @Override + public void requestLayout () { + layout (null, SWT.DEFER); + } /////////// // Disposal diff --git a/bundles/org.eclipse.rap.ui.forms/src/org/eclipse/ui/forms/widgets/ExpandableComposite.java b/bundles/org.eclipse.rap.ui.forms/src/org/eclipse/ui/forms/widgets/ExpandableComposite.java index 9674fc593b..a490a7688e 100644 --- a/bundles/org.eclipse.rap.ui.forms/src/org/eclipse/ui/forms/widgets/ExpandableComposite.java +++ b/bundles/org.eclipse.rap.ui.forms/src/org/eclipse/ui/forms/widgets/ExpandableComposite.java @@ -38,6 +38,7 @@ import org.eclipse.swt.widgets.Layout; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.forms.events.ExpansionEvent; import org.eclipse.ui.forms.events.HyperlinkAdapter; import org.eclipse.ui.forms.events.HyperlinkEvent; @@ -880,7 +881,7 @@ protected void internalSetExpanded(boolean expanded) { getDescriptionControl().setVisible(expanded); if (client != null) client.setVisible(expanded); - layout(); + reflow(); } } @@ -1117,4 +1118,32 @@ private void programmaticToggleState() { // if (toggle.isFocusControl()) // gc.drawFocus(0, 0, size.x, size.y); // } + + void reflow() { + Composite c = this; + while (c != null) { + c.setRedraw(false); + c = c.getParent(); + if (c instanceof SharedScrolledComposite || c instanceof Shell) { + break; + } + } + c = this; + while (c != null) { + c.requestLayout(); + c = c.getParent(); + if (c instanceof SharedScrolledComposite) { + ((SharedScrolledComposite) c).reflow(true); + break; + } + } + c = this; + while (c != null) { + c.setRedraw(true); + c = c.getParent(); + if (c instanceof SharedScrolledComposite || c instanceof Shell) { + break; + } + } + } } diff --git a/bundles/org.eclipse.rap.ui.forms/src/org/eclipse/ui/forms/widgets/Section.java b/bundles/org.eclipse.rap.ui.forms/src/org/eclipse/ui/forms/widgets/Section.java index a4a0423424..5dbd6bdf4f 100644 --- a/bundles/org.eclipse.rap.ui.forms/src/org/eclipse/ui/forms/widgets/Section.java +++ b/bundles/org.eclipse.rap.ui.forms/src/org/eclipse/ui/forms/widgets/Section.java @@ -125,31 +125,7 @@ protected void internalSetExpanded(boolean expanded) { * SharedScrolledComposite is reached. */ protected void reflow() { - Composite c = this; - while (c != null) { - c.setRedraw(false); - c = c.getParent(); - if (c instanceof SharedScrolledComposite || c instanceof Shell) { - break; - } - } - c = this; - while (c != null) { - c.layout(true); - c = c.getParent(); - if (c instanceof SharedScrolledComposite) { - ((SharedScrolledComposite) c).reflow(true); - break; - } - } - c = this; - while (c != null) { - c.setRedraw(true); - c = c.getParent(); - if (c instanceof SharedScrolledComposite || c instanceof Shell) { - break; - } - } + super.reflow(); } /**