Bug 497812: requestLayout not layout correctly (after a DnD)

Backport of:
https://git.eclipse.org/r/#/c/80818/
to R4_6.

Hand-written (instead of cherry picking) as instance-of was never
introduced in maintenance.

Change-Id: I7cb40cc4069e947697b74927ade1d9b628252fff
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=497812
Signed-off-by: Leo Ufimtsev <lufimtse@redhat.com>
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java
index 385b232..ca07d36 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Composite.java
@@ -868,6 +868,9 @@
 		for (int i=0; i<changed.length; i++) {
 			Control child = changed [i];
 			Composite composite = child.parent;
+			// Update layout when the list of children has changed.
+			// See bug 497812.
+			child.markLayout(false, false);
 			while (child != this) {
 				if (composite.layout != null) {
 					composite.state |= LAYOUT_NEEDED;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
index 2475336..f8665bb 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Composite.java
@@ -1176,6 +1176,9 @@
 		for (int i=0; i<changed.length; i++) {
 			Control child = changed [i];
 			Composite composite = child.parent;
+			// Update layout when the list of children has changed.
+			// See bug 497812.
+			child.markLayout(false, false);
 			while (child != this) {
 				if (composite.layout != null) {
 					composite.state |= LAYOUT_NEEDED;
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java
index 0eca1af..cf80097 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Composite.java
@@ -845,6 +845,9 @@
 		for (int i=0; i<changed.length; i++) {
 			Control child = changed [i];
 			Composite composite = child.parent;
+			// Update layout when the list of children has changed.
+			// See bug 497812.
+			child.markLayout(false, false);
 			while (child != this) {
 				if (composite.layout != null) {
 					composite.state |= LAYOUT_NEEDED;