Community
Participate
Working Groups
The CleanupAddon recursively calls setVisible(false) on all parent elements, ultimately causing the shell itself to be made invisible also. Thread [main] (Suspended (breakpoint at line 1835 in Shell)) Shell.setVisible(boolean) line: 1835 CleanupAddon$2.handleEvent(Event) line: 145 UIEventHandler$1.run() line: 41 Synchronizer.syncExec(Runnable) line: 179 Display.syncExec(Runnable) line: 4681 E4Application$1.syncExec(Runnable) line: 182 UIEventHandler.handleEvent(Event) line: 38 EventHandlerWrapper.handleEvent(Event, Permission) line: 197 EventHandlerTracker.dispatchEvent(EventHandlerWrapper, Permission, int, Event) line: 197 EventHandlerTracker.dispatchEvent(Object, Object, int, Object) line: 1 EventManager.dispatchEvent(Set<Entry<K,V>>, EventDispatcher<K,V,E>, int, E) line: 230 ListenerQueue<K,V,E>.dispatchEventSynchronous(int, E) line: 148 EventAdminImpl.dispatchEvent(Event, boolean) line: 135 EventAdminImpl.sendEvent(Event) line: 78 EventComponent.sendEvent(Event) line: 39 EventBroker.send(String, Object) line: 81 UIEventPublisher.notifyChanged(Notification) line: 58 TrimmedWindowImpl(BasicNotifierImpl).eNotify(Notification) line: 380 TrimmedWindowImpl(UIElementImpl).setVisible(boolean) line: 334 CleanupAddon$2.handleEvent(Event) line: 221 UIEventHandler$1.run() line: 41 Synchronizer.syncExec(Runnable) line: 179 Display.syncExec(Runnable) line: 4681 E4Application$1.syncExec(Runnable) line: 182 UIEventHandler.handleEvent(Event) line: 38 EventHandlerWrapper.handleEvent(Event, Permission) line: 197 EventHandlerTracker.dispatchEvent(EventHandlerWrapper, Permission, int, Event) line: 197 EventHandlerTracker.dispatchEvent(Object, Object, int, Object) line: 1 EventManager.dispatchEvent(Set<Entry<K,V>>, EventDispatcher<K,V,E>, int, E) line: 230 ListenerQueue<K,V,E>.dispatchEventSynchronous(int, E) line: 148 EventAdminImpl.dispatchEvent(Event, boolean) line: 135 EventAdminImpl.sendEvent(Event) line: 78 EventComponent.sendEvent(Event) line: 39 EventBroker.send(String, Object) line: 81 UIEventPublisher.notifyChanged(Notification) line: 58 PartSashContainerImpl(BasicNotifierImpl).eNotify(Notification) line: 380 PartSashContainerImpl(UIElementImpl).setVisible(boolean) line: 334 CleanupAddon$2.handleEvent(Event) line: 221 UIEventHandler$1.run() line: 41 Synchronizer.syncExec(Runnable) line: 179 Display.syncExec(Runnable) line: 4681 E4Application$1.syncExec(Runnable) line: 182 UIEventHandler.handleEvent(Event) line: 38 EventHandlerWrapper.handleEvent(Event, Permission) line: 197 EventHandlerTracker.dispatchEvent(EventHandlerWrapper, Permission, int, Event) line: 197 EventHandlerTracker.dispatchEvent(Object, Object, int, Object) line: 1 EventManager.dispatchEvent(Set<Entry<K,V>>, EventDispatcher<K,V,E>, int, E) line: 230 ListenerQueue<K,V,E>.dispatchEventSynchronous(int, E) line: 148 EventAdminImpl.dispatchEvent(Event, boolean) line: 135 EventAdminImpl.sendEvent(Event) line: 78 EventComponent.sendEvent(Event) line: 39 EventBroker.send(String, Object) line: 81 UIEventPublisher.notifyChanged(Notification) line: 58 PartStackImpl(BasicNotifierImpl).eNotify(Notification) line: 380 PartStackImpl(UIElementImpl).setVisible(boolean) line: 334 MinMaxAddon.minimize(MUIElement) line: 376 MinMaxAddon$5.handleEvent(Event) line: 244 UIEventHandler$1.run() line: 41 Synchronizer.syncExec(Runnable) line: 179 Display.syncExec(Runnable) line: 4681 E4Application$1.syncExec(Runnable) line: 182 UIEventHandler.handleEvent(Event) line: 38 EventHandlerWrapper.handleEvent(Event, Permission) line: 197 EventHandlerTracker.dispatchEvent(EventHandlerWrapper, Permission, int, Event) line: 197 EventHandlerTracker.dispatchEvent(Object, Object, int, Object) line: 1 EventManager.dispatchEvent(Set<Entry<K,V>>, EventDispatcher<K,V,E>, int, E) line: 230 ListenerQueue<K,V,E>.dispatchEventSynchronous(int, E) line: 148 EventAdminImpl.dispatchEvent(Event, boolean) line: 135 EventAdminImpl.sendEvent(Event) line: 78 EventComponent.sendEvent(Event) line: 39 EventBroker.send(String, Object) line: 81 UIEventPublisher.notifyChanged(Notification) line: 58 PartStackImpl(BasicNotifierImpl).eNotify(Notification) line: 380 EDataTypeUniqueEList<E>(EcoreEList<E>).dispatchNotification(Notification) line: 255 EDataTypeUniqueEList<E>(NotifyingListImpl<E>).addUnique(E) line: 310 EDataTypeUniqueEList<E>(AbstractEList<E>).add(E) line: 307 MinMaxAddon.setState(MUIElement, String) line: 170 MinMaxAddon.access$0(MinMaxAddon, MUIElement, String) line: 159 MinMaxAddon$1.minimize(CTabFolderEvent) line: 91 CTabFolder.onSelection(Event) line: 1926
In my opinion the Minimize should work like this. Assuming n > 1 PartStacks are active: If stack number n-1 gets minimized (meaning that n-2 stacks have been minimized already), then the status of the remaining "unminimized" stack should be set to MAXIMIZED. This way the result of minimizing n-1 stacks is the same as maximizing the remaining stack and the status of the workbench is always valid. If only one PartStack is active then Min/Max should be disabled.
Looks like this bug has been fixed by the changes for bug 340873. Christoph, if you feel the points you raised are important please open individual bugs for them for each scenario, thank you for your input and for testing Eclipse 4! *** This bug has been marked as a duplicate of bug 340873 ***
Have done so: Bug 345902 Bug 345904