Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 339249

Summary: SWTException thrown after resetting a perspective with a detached window
Product: [Eclipse Project] e4 Reporter: Remy Suen <remy.suen>
Component: UIAssignee: Project Inbox <e4.ui-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: major    
Priority: P3    
Version: 1.0   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Patch to route TB disposal through removeGui none

Description Remy Suen CLA 2011-03-08 11:55:39 EST
1. Detach the 'Outline' view.
2. Window > Reset Perspective... > OK
3. An SWTException is thrown.

Switching perspectives seems to fix the problem but an error will now be thrown every time you reset the persepctive.

org.eclipse.swt.SWTException: Widget is disposed
	at org.eclipse.swt.SWT.error(SWT.java:4270)
	at org.eclipse.swt.SWT.error(SWT.java:4185)
	at org.eclipse.swt.SWT.error(SWT.java:4156)
	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.Composite.computeSize(Composite.java:226)
	at org.eclipse.e4.ui.widgets.CTabFolder.setButtonBounds(CTabFolder.java:2219)
	at org.eclipse.e4.ui.widgets.CTabFolder.updateItems(CTabFolder.java:3449)
	at org.eclipse.e4.ui.widgets.CTabFolder.updateItems(CTabFolder.java:3382)
	at org.eclipse.e4.ui.widgets.CTabFolder.onResize(CTabFolder.java:1783)
	at org.eclipse.e4.ui.widgets.CTabFolder$2.handleEvent(CTabFolder.java:272)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)
	at org.eclipse.swt.widgets.Control.WM_SIZE(Control.java:5156)
	at org.eclipse.swt.widgets.Scrollable.WM_SIZE(Scrollable.java:291)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1662)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4586)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4957)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2520)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:5391)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4599)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4970)
	at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(Native Method)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:949)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:915)
	at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:1126)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1677)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4586)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4957)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2520)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:80)
	at org.eclipse.swt.widgets.Control.WM_WINDOWPOSCHANGED(Control.java:5391)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4599)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4957)
	at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
	at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1457)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:3111)
	at org.eclipse.swt.widgets.Composite.setBounds(Composite.java:1019)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:3072)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:3068)
	at org.eclipse.swt.layout.FillLayout.layout(FillLayout.java:201)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1263)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1249)
	at org.eclipse.swt.widgets.Composite.setLayoutDeferred(Composite.java:1086)
	at org.eclipse.swt.widgets.Display.runDeferredLayouts(Display.java:4174)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3732)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:842)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:758)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:87)
Comment 1 Eric Moffatt CLA 2011-03-08 16:44:20 EST
Created attachment 190705 [details]
Patch to route TB disposal through removeGui


This appears to be related to removing MRenderedToolbars in favor of using 'regular' MToolbars.

BTW, this has nothing to do with Detached windows, you can induce it simply by resetting the perspective.
Comment 2 Remy Suen CLA 2011-03-09 07:44:17 EST
I opened bug 339344 to SWT to consider not choking when the top right control has been disposed.
Comment 3 Remy Suen CLA 2011-03-11 09:21:39 EST
Fixed by the changes for bug 339286.

Verified that resetting works on Windows XP with I20110310-2200.

*** This bug has been marked as a duplicate of bug 339286 ***