Bug 320243 Closing last view of a minimized stack makes the stack in an unstable state
I20100718-2237 1. Minimize the 'Package Explorer'. 2. Show it by clicking its icon in the trim. 3. Close it. 4. Notice that it still shows up in the trim. 5. Click on the icon. 6. An SWTException occurs. org.eclipse.swt.SWTException: Widget is disposed at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.SWT.error(SWT.java:3969) at org.eclipse.swt.widgets.Widget.error(Widget.java:468) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340) at org.eclipse.swt.widgets.Widget.getData(Widget.java:554) at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack$9.widgetSelected(TrimStack.java:308)
bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/minmax/MinMaxAddon.java
public void handleEvent(Event event) {
			final MUIElement changedElement = (MUIElement) event.getProperty(EventTags.ELEMENT);
			Widget widget = (Widget) event.getProperty(EventTags.NEW_VALUE);
			if (changedElement instanceof MPartStack && widget instanceof CTabFolder
					&& changedElement.getElementId() != null) {
				final CTabFolder folder = (CTabFolder) widget;
				if (!changedElement.getTags().contains("EditorStack")) { 
					folder.setMinimizeVisible(true);
					folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
						public void minimize(CTabFolderEvent event) {
							changedElement.getTags().add(MINIMIZED);
						}
						public void restore(CTabFolderEvent event) {
							changedElement.getTags().remove(MINIMIZED);
						}
					});
				} else {
					folder.setMaximizeVisible(true);
					folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
						public void maximize(CTabFolderEvent event) {
							MWindow window = modelService.getTopLevelWindowFor(changedElement);
							MPerspective curPersp = modelService.getActivePerspective(window);
							curPersp.getTags().add(EA_MAXIMIZED);
						}
						public void restore(CTabFolderEvent event) {
							MWindow window = modelService.getTopLevelWindowFor(changedElement);
							MPerspective curPersp = modelService.getActivePerspective(window);
							curPersp.getTags().remove(EA_MAXIMIZED);
						}
					});