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