Merge remote-tracking branch 'origin/R4_2_maintenance'
diff --git a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/TrimStack.java b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/TrimStack.java
index 35423f9..ed93855 100644
--- a/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/TrimStack.java
+++ b/bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/TrimStack.java
@@ -311,7 +311,8 @@
 			MUIElement changedElement = (MUIElement) event.getProperty(UIEvents.EventTags.ELEMENT);
 
 			// Open if shared area
-			if (getLeafPart(minimizedElement) == changedElement) {
+			if (getLeafPart(minimizedElement) == changedElement
+					&& !(minimizedElement instanceof MPerspectiveStack)) {
 				showStack(true);
 				return;
 			}
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 c9e6672..c7c5ee6 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
@@ -2992,6 +2992,8 @@
 					WorkbenchMessages.EditorManager_unknownEditorIDMessage, editorId));
 		}
 
+		setEditorAreaVisible(true);
+
 		IEditorReference[] editorReferences = findEditors(input, editorId, matchFlags);
 		if (editorReferences.length != 0) {
 			IEditorPart editor = editorReferences[0].getEditor(true);
@@ -3502,6 +3504,12 @@
 				// make sure it's been rendered if it hasn't been
 				find.setToBeRendered(true);
 			}
+
+			// If the EA is minimized, restore it...
+			if (showEditorArea) {
+				find.getTags().remove(IPresentationEngine.MINIMIZED);
+			}
+
 			find.setVisible(showEditorArea);
 		}
 	}