diff options
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; } /** |