Bug 316246 Clean up code should not only run on IPresentationEngine.stop()
This results in the fact the clean up code in there is not run.
bundles/org.eclipse.e4.ui.workbench.swt/src/org/eclipse/e4/ui/internal/workbench/swt/PartRenderingEngine.java
renderer.disposeWidget(element);
		}
		
		if (element instanceof MContribution) {
			((MContribution) element).setObject(null);
		}
		
		if (element instanceof MContext) {
			clearContext((MContext) element);
		}
	}
	private void unhookReferences(MUIElement element, IEclipseContext newContext) {
		List<MPlaceholder> phList = modelService.findElements(element, null,
				MPlaceholder.class, null);
		for (MPlaceholder ph : phList) {
			MUIElement ref = ph.getRef();
			if (ref.getCurSharedRef() == ph) {
				if (ref.getWidget() instanceof Control) {
					Control refCtrl = (Control) ref.getWidget();
					if (!refCtrl.isDisposed())
						refCtrl.setParent(getLimboShell());
				}
				if (ref instanceof MContext) {
					IEclipseContext lclContext = ((MContext) ref).getContext();
					if (lclContext != null) {
						IEclipseContext parentContext = lclContext.getParent();
						Object child = parentContext
								.get(IContextConstants.ACTIVE_CHILD);
						if (child == lclContext) {
							parentContext.set(IContextConstants.ACTIVE_CHILD,