Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 387234 | Differences between
and this patch

Collapse All | Expand All

(-)a/bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java (-2 / +1 lines)
Lines 116-124 Link Here
116
116
117
			boolean menuChild = parent instanceof MMenu;
117
			boolean menuChild = parent instanceof MMenu;
118
118
119
			// If the parent isn't displayed who cares?
120
			if (!(parent instanceof MApplication)
119
			if (!(parent instanceof MApplication)
121
					&& (parent == null || parent.getWidget() == null || menuChild))
120
					&& (parent == null || menuChild))
122
				return;
121
				return;
123
122
124
			if (changedElement.isToBeRendered()) {
123
			if (changedElement.isToBeRendered()) {
(-)a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/workbench/PartRenderingEngineTests.java (+55 lines)
Lines 3275-3280 Link Here
3275
		assertEquals(shell, obj.getControl().getShell());
3275
		assertEquals(shell, obj.getControl().getShell());
3276
	}
3276
	}
3277
3277
3278
	public void testBug387234() {
3279
		MApplication application = ApplicationFactoryImpl.eINSTANCE
3280
				.createApplication();
3281
3282
		MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
3283
		application.getChildren().add(window);
3284
		application.setSelectedElement(window);
3285
3286
		MPartStack stack = BasicFactoryImpl.eINSTANCE.createPartStack();
3287
		window.getChildren().add(stack);
3288
		window.setSelectedElement(stack);
3289
3290
		MPart part = BasicFactoryImpl.eINSTANCE.createPart();
3291
		stack.getChildren().add(part);
3292
		stack.setSelectedElement(part);
3293
3294
		MWindow detachedWindow = BasicFactoryImpl.eINSTANCE.createWindow();
3295
		window.getWindows().add(detachedWindow);
3296
3297
		MPartStack detachedStack = BasicFactoryImpl.eINSTANCE.createPartStack();
3298
		detachedWindow.getChildren().add(detachedStack);
3299
		detachedWindow.setSelectedElement(detachedStack);
3300
3301
		application.setContext(appContext);
3302
		appContext.set(MApplication.class.getName(), application);
3303
3304
		wb = new E4Workbench(application, appContext);
3305
		wb.createAndRunUI(window);
3306
3307
		stack.getChildren().remove(part);
3308
		detachedStack.getChildren().add(part);
3309
		detachedStack.setSelectedElement(part);
3310
3311
		assertTrue("Detached window should be rendered",
3312
				detachedWindow.isToBeRendered());
3313
		assertTrue("Detached stack should be rendered",
3314
				detachedStack.isToBeRendered());
3315
		assertTrue("Part should be rendered", part.isToBeRendered());
3316
3317
		Shell shell = (Shell) detachedWindow.getWidget();
3318
		shell.close();
3319
		spinEventLoop(); // process pending events
3320
3321
		assertFalse("Detached window should not be rendered",
3322
				detachedWindow.isToBeRendered());
3323
		assertFalse("Detached stack should not be rendered",
3324
				detachedStack.isToBeRendered());
3325
		assertFalse("Part should not be rendered", part.isToBeRendered());
3326
3327
		assertNull("Selected element should be null",
3328
				detachedStack.getSelectedElement());
3329
		assertNull("Selected element should be null",
3330
				detachedWindow.getSelectedElement());
3331
	}
3332
3278
	private MWindow createWindowWithOneView(String partName) {
3333
	private MWindow createWindowWithOneView(String partName) {
3279
		final MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
3334
		final MWindow window = BasicFactoryImpl.eINSTANCE.createWindow();
3280
		window.setHeight(300);
3335
		window.setHeight(300);

Return to bug 387234