### Eclipse Workspace Patch 1.0 #P org.eclipse.swt Index: Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java,v retrieving revision 1.168 diff -u -r1.168 Decorations.java --- Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java 3 Mar 2009 22:16:17 -0000 1.168 +++ Eclipse SWT/win32/org/eclipse/swt/widgets/Decorations.java 18 Mar 2009 11:41:39 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. + * Copyright (c) 2000, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -11,9 +11,25 @@ package org.eclipse.swt.widgets; -import org.eclipse.swt.internal.win32.*; -import org.eclipse.swt.*; -import org.eclipse.swt.graphics.*; +import java.lang.ref.WeakReference; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.SWTException; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.ImageData; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.internal.win32.ACCEL; +import org.eclipse.swt.internal.win32.CREATESTRUCT; +import org.eclipse.swt.internal.win32.LRESULT; +import org.eclipse.swt.internal.win32.MENUITEMINFO; +import org.eclipse.swt.internal.win32.MSG; +import org.eclipse.swt.internal.win32.OS; +import org.eclipse.swt.internal.win32.RECT; +import org.eclipse.swt.internal.win32.STARTUPINFO; +import org.eclipse.swt.internal.win32.TCHAR; +import org.eclipse.swt.internal.win32.WINDOWPLACEMENT; +import org.eclipse.swt.internal.win32.WINDOWPOS; /** * Instances of this class provide the appearance and @@ -96,10 +112,26 @@ */ public class Decorations extends Canvas { + + private static class WeakMenuReference extends WeakReference { + private Error error; + + public WeakMenuReference(Object r) { + super(r); + error = new Error(); + } + + public boolean enqueue() { + System.err.println("Decorations.WeakMenuReference.enqueue(): " + get()); //$NON-NLS-1$ + error.printStackTrace(); + return super.enqueue(); + } + } + Image image, smallImage, largeImage; Image [] images; Menu menuBar; - Menu [] menus; + WeakMenuReference [] menus; Control savedFocus; Button defaultButton, saveDefault; int swFlags, nAccel; @@ -201,15 +233,15 @@ } void addMenu (Menu menu) { - if (menus == null) menus = new Menu [4]; + if (menus == null) menus = new WeakMenuReference[4]; for (int i=0; i