Bug 348069 Closing an additional window of an Eclipse 4 application doesn't unrender it
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/WBWRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/WBWRenderer.java
index 93aaab4..75d4e94 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/WBWRenderer.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/WBWRenderer.java
@@ -461,18 +461,7 @@
 							EPartService partService = (EPartService) window
 									.getContext().get(
 											EPartService.class.getName());
-							if (partService.saveAll(true)) {
-								// unrender the window
-								window.setToBeRendered(false);
-								Object parent = ((EObject) window).eContainer();
-								if (parent instanceof MApplication) {
-									// remove it from the application
-									((MApplication) parent).getChildren()
-											.remove(window);
-								}
-								return true;
-							}
-							return false;
+							return partService.saveAll(true);
 						}
 					});
 		}
diff --git a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
index e3ef320..c8c9bbe 100644
--- a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
+++ b/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
@@ -1030,7 +1030,7 @@
 		// FIXME Without this call the test-suite fails
 		cleanUp();
 		if (theApp != null) {
-			for (MWindow window : new ArrayList<MWindow>(theApp.getChildren())) {
+			for (MWindow window : theApp.getChildren()) {
 				if (window.getWidget() != null) {
 					((Shell) window.getWidget()).close();
 				}
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java
index 247d866..6eb2e7c 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java
@@ -2695,63 +2695,6 @@
 		assertTrue(area.isToBeRendered());
 	}
 
-	public void testBug348069() {
-		MApplication application = ApplicationFactoryImpl.eINSTANCE
-				.createApplication();
-
-		MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
-		application.getChildren().add(window);
-		application.setSelectedElement(window);
-
-		MPart part = BasicFactoryImpl.eINSTANCE.createPart();
-		part.setContributionURI("platform:/plugin/org.eclipse.e4.ui.tests/org.eclipse.e4.ui.tests.workbench.SampleView");
-		window.getChildren().add(part);
-		window.setSelectedElement(part);
-
-		application.setContext(appContext);
-		appContext.set(MApplication.class.getName(), application);
-
-		wb = new E4Workbench(application, appContext);
-		wb.createAndRunUI(window);
-
-		SampleView view = (SampleView) part.getObject();
-		assertFalse(view.isDestroyed());
-
-		((Shell) window.getWidget()).close();
-		assertTrue(view.isDestroyed());
-		assertFalse(application.getChildren().contains(window));
-	}
-
-	public void testBug348069_DetachedWindow() {
-		MApplication application = ApplicationFactoryImpl.eINSTANCE
-				.createApplication();
-
-		MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
-		application.getChildren().add(window);
-		application.setSelectedElement(window);
-
-		MWindow detachedWindow = BasicFactoryImpl.eINSTANCE.createWindow();
-		window.getWindows().add(detachedWindow);
-
-		MPart part = BasicFactoryImpl.eINSTANCE.createPart();
-		part.setContributionURI("platform:/plugin/org.eclipse.e4.ui.tests/org.eclipse.e4.ui.tests.workbench.SampleView");
-		detachedWindow.getChildren().add(part);
-		detachedWindow.setSelectedElement(part);
-
-		application.setContext(appContext);
-		appContext.set(MApplication.class.getName(), application);
-
-		wb = new E4Workbench(application, appContext);
-		wb.createAndRunUI(window);
-
-		SampleView view = (SampleView) part.getObject();
-		assertFalse(view.isDestroyed());
-
-		((Shell) detachedWindow.getWidget()).close();
-		assertTrue(view.isDestroyed());
-		assertTrue(window.getWindows().contains(detachedWindow));
-	}
-
 	public void testBug348215_PartOnlyContextReparent() {
 		MApplication application = ApplicationFactoryImpl.eINSTANCE
 				.createApplication();
@@ -2860,46 +2803,6 @@
 		assertTrue(part.getContext().getParent() == window.getContext());
 	}
 
-	public void testBug348069_DetachedPerspectiveWindow() {
-		MApplication application = ApplicationFactoryImpl.eINSTANCE
-				.createApplication();
-
-		MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
-		application.getChildren().add(window);
-		application.setSelectedElement(window);
-
-		MPerspectiveStack perspectiveStack = AdvancedFactoryImpl.eINSTANCE
-				.createPerspectiveStack();
-		window.getChildren().add(perspectiveStack);
-		window.setSelectedElement(perspectiveStack);
-
-		MPerspective perspective = AdvancedFactoryImpl.eINSTANCE
-				.createPerspective();
-		perspectiveStack.getChildren().add(perspective);
-		perspectiveStack.setSelectedElement(perspective);
-
-		MWindow detachedWindow = BasicFactoryImpl.eINSTANCE.createWindow();
-		perspective.getWindows().add(detachedWindow);
-
-		MPart part = BasicFactoryImpl.eINSTANCE.createPart();
-		part.setContributionURI("platform:/plugin/org.eclipse.e4.ui.tests/org.eclipse.e4.ui.tests.workbench.SampleView");
-		detachedWindow.getChildren().add(part);
-		detachedWindow.setSelectedElement(part);
-
-		application.setContext(appContext);
-		appContext.set(MApplication.class.getName(), application);
-
-		wb = new E4Workbench(application, appContext);
-		wb.createAndRunUI(window);
-
-		SampleView view = (SampleView) part.getObject();
-		assertFalse(view.isDestroyed());
-
-		((Shell) detachedWindow.getWidget()).close();
-		assertTrue(view.isDestroyed());
-		assertTrue(perspective.getWindows().contains(detachedWindow));
-	}
-
 	private MWindow createWindowWithOneView(String partName) {
 		final MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
 		window.setHeight(300);