diff options
author | Steve Northover <steve> | 2007-10-25 19:07:54 +0000 |
---|---|---|
committer | Steve Northover <steve> | 2007-10-25 19:07:54 +0000 |
commit | ac1cb622bd117559fce6fef13f61cee1624cd94b (patch) | |
tree | 38e8afbb7be18fcfc294e7bc0aa51e9447ebba9d /bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java | |
parent | f4bf784633a3133897e45a4c20e9dd0f60a6f50f (diff) | |
download | eclipse.platform.swt-ac1cb622bd117559fce6fef13f61cee1624cd94b.tar.gz eclipse.platform.swt-ac1cb622bd117559fce6fef13f61cee1624cd94b.tar.xz eclipse.platform.swt-ac1cb622bd117559fce6fef13f61cee1624cd94b.zip |
207263 - NPE in org.eclipse.swt.widgets.Control.WM_MENUSELECT
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java')
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java index bd757dc484..2cd3dc7b86 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Menu.java @@ -568,12 +568,17 @@ void destroyItem (MenuItem item) { } void destroyWidget () { + MenuItem parentItem = cascade; int /*long*/ hMenu = handle, hCB = hwndCB; releaseHandle (); if (OS.IsWinCE && hCB != 0) { OS.CommandBar_Destroy (hCB); } else { - if (hMenu != 0) OS.DestroyMenu (hMenu); + if (parentItem != null) { + if (!OS.IsSP) parentItem.setMenu (null, true); + } else { + if (hMenu != 0) OS.DestroyMenu (hMenu); + } } } @@ -1098,6 +1103,7 @@ void redraw () { void releaseHandle () { super.releaseHandle (); handle = hwndCB = 0; + cascade = null; } void releaseChildren (boolean destroy) { @@ -1144,7 +1150,6 @@ void releaseWidget () { } if (parent != null) parent.removeMenu (this); parent = null; - cascade = null; } /** |