Bug 307901 EPartService does not short circuit saveAll(boolean) if 'false' and/or no save handler is provided
The code looks like so... boolean success = true; for (MPart dirtyPart : dirtyParts) { if (!savePart(dirtyPart, false)) { success = false; } } return success; ...the first time a save fails, we should return false immediately.
bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/PartServiceImpl.java
public MPart showPart(MPart part, PartState partState) {
		Assert.isNotNull(part);
		Assert.isNotNull(partState);
		MPart localPart = findPart(part.getId());
		if (localPart != null) {
			return showPart(partState, part, localPart);
		}
		return showPart(partState, part, part);
	}
	public void hidePart(MPart part) {
		if (isInContainer(part)) {
			part.setToBeRendered(false);
			if (part.getTags().contains(REMOVE_ON_HIDE_TAG)) {
				MElementContainer<MUIElement> parent = part.getParent();
				EList<MUIElement> children = parent.getChildren();
				children.remove(part);
				
				if (parent.getSelectedElement() == part && !children.isEmpty()) {
					parent.setSelectedElement(children.get(0));
				}
			}
		}
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.e4.workbench.modeling.EPartService#getDirtyParts()
	 */
	public Collection<MPart> getDirtyParts() {
		List<MPart> dirtyParts = new ArrayList<MPart>();