Fixed bug 375576: Controls are not fully realized when partOpened(...)
and partActivated(...) are called
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
index e0e289c..3f5a8e7 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchPage.java
@@ -4285,6 +4285,7 @@
 	}
 
 	private void firePartActivated(MPart part) {
+
 		Object client = part.getObject();
 		if (client instanceof CompatibilityPart) {
 			final IWorkbenchPart workbenchPart = ((CompatibilityPart) client).getPart();
@@ -4294,6 +4295,16 @@
 				return;
 			}
 
+			if (partListenerList.size() + partListener2List.size() == 0)
+				return;
+
+			// Flush deferred layouts if needed, see bug 375576 for details
+			Object widget = part.getWidget();
+			if (widget instanceof Composite) {
+				Composite parent = (Composite) widget;
+				parent.getDisplay().readAndDispatch();
+			}
+
 			for (final Object listener : partListenerList.getListeners()) {
 				SafeRunner.run(new SafeRunnable() {
 					public void run() throws Exception {
@@ -4343,6 +4354,16 @@
 		SaveablesList saveablesList = (SaveablesList) getWorkbenchWindow().getService(
 				ISaveablesLifecycleListener.class);
 		saveablesList.postOpen(part);
+		
+		if (partListenerList.size() + partListener2List.size() == 0)
+			return;
+
+		// Flush deferred layouts if needed, see bug 375576 for details
+		MPart model = compatibilityPart.getModel();
+		if (model != null && (model.getWidget() instanceof Composite)) {
+			Composite parent = (Composite) model.getWidget();
+			parent.getDisplay().readAndDispatch();
+		}
 
 		for (final Object listener : partListenerList.getListeners()) {
 			SafeRunner.run(new SafeRunnable() {
@@ -4433,6 +4454,16 @@
 			final IWorkbenchPart workbenchPart = ((CompatibilityPart) client).getPart();
 			final IWorkbenchPartReference partReference = getReference(workbenchPart);
 
+			if (partListenerList.size() + partListener2List.size() == 0)
+				return;
+
+			// Flush deferred layouts if needed, see bug 375576 for details
+			Object widget = part.getWidget();
+			if (widget instanceof Composite) {
+				Composite parent = (Composite) widget;
+				parent.getDisplay().readAndDispatch();
+			}
+
 			for (final Object listener : partListenerList.getListeners()) {
 				SafeRunner.run(new SafeRunnable() {
 					public void run() throws Exception {
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityEditor.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityEditor.java
index f0d3108..c5455cf 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityEditor.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/compatibility/CompatibilityEditor.java
@@ -127,10 +127,6 @@
 			}
 		}
 
-		// Flush ant deferred layouts and do an explicit one...see bug 375576
-		parent.getDisplay().readAndDispatch();
-		parent.layout(true, true);
-
 		return true;
 	}