Fix for Bug 348582 - Shared area grows in number of part stacks after having moved views inside it
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
index e6c4431..05b2213 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
@@ -740,12 +740,28 @@
 		List<MArea> areas = findElements(window, null, MArea.class, null);
 		if (areas.size() == 1) {
 			MArea area = areas.get(0);
+
+			// Strip out the placeholders in visible stacks
 			List<MPlaceholder> phList = findElements(area, null, MPlaceholder.class, null);
 			for (MPlaceholder ph : phList) {
 				ps.hidePart((MPart) ph.getRef());
 
 				ph.getParent().getChildren().remove(ph);
 			}
+
+			// Now remove any empty stacks (except for one)
+			List<MPartStack> stackList = findElements(area, null, MPartStack.class, null);
+			for (MPartStack stack : stackList) {
+				if (stack.getChildren().size() == 0 && !isLastEditorStack(stack)) {
+					// unrender this empty stack
+					stack.setToBeRendered(false);
+					MElementContainer<MUIElement> parent = stack.getParent();
+					if (parent != null) {
+						// remove it from our structure
+						parent.getChildren().remove(stack);
+					}
+				}
+			}
 		}
 
 		// Remove any minimized stacks for this perspective