Bug 45811 [Dialogs] Problematic behavior of WorkbenchPreferenceDialog.setShellSize()
I20031023 MacOS X 10.3 - in Panther open Window > Preferences > Ant > Editor Observe: all hell breaks loose... I had to restart my machine and lost work! Two problems here: - a width of 12902 and a height of 16909 is passed to WorkbenchPreferenceDialog.setShellSize() (why this is the case needs further investigation) - however, JavaDoc of setShellSize states: "Changes the shell size to the given size, ensuring that it is no larger than the display bounds" the implementation is: private void setShellSize(int width, int height) { getShell().setSize(width, height); constrainShellSize(); } I think it doesn't make much sense to first set the Shell's size to a bogus value and then constrain its size to something sensible.
bundles/org.eclipse.jface/src/org/eclipse/jface/preference/PreferenceDialog.java
* @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
			 */
			public void handleEvent(Event event) {
				if (event.detail == SWT.DRAG)
					return;
				int shift = event.x - sash.getBounds().x;
				GridData data = (GridData) treeControl.getLayoutData();
				int newWidthHint = data.widthHint + shift;
				if (newWidthHint < 20)
					return;
				
				Point computedSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
				Point currentSize = getShell().getSize();
				
				 
				  
				boolean customSize = !computedSize.equals(currentSize);
				
				data.widthHint = newWidthHint;
				setLastTreeWidth(newWidthHint);
				composite.layout(true);
				
				
				computedSize = getShell().computeSize(SWT.DEFAULT, SWT.DEFAULT);
				
				 
				
				if (customSize)   
					computedSize.x = Math.max(computedSize.x, currentSize.x);