diff options
author | Silenio Quarti <silenio> | 2002-12-09 23:23:03 +0000 |
---|---|---|
committer | Silenio Quarti <silenio> | 2002-12-09 23:23:03 +0000 |
commit | bc809b9d76f63a9c71dd9e9bc096d3f86078613d (patch) | |
tree | 7dac0e0f11265e820c79e495cca4215a583c3184 | |
parent | b70a09d3f09881f2ae6bb70f4f6b1351d6d1bad2 (diff) | |
download | eclipse.platform.swt-bc809b9d76f63a9c71dd9e9bc096d3f86078613d.tar.gz eclipse.platform.swt-bc809b9d76f63a9c71dd9e9bc096d3f86078613d.tar.xz eclipse.platform.swt-bc809b9d76f63a9c71dd9e9bc096d3f86078613d.zip |
*** empty log message ***
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Decorations.java | 22 | ||||
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java | 18 |
2 files changed, 40 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Decorations.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Decorations.java index 5fe339e3ff..7c6ac98fa1 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Decorations.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Decorations.java @@ -94,6 +94,28 @@ Decorations menuShell () { } void releaseWidget () { + if (menuBar != null) menuBar.dispose (); + menuBar = null; + Display display = getDisplay (); + Menu [] menus = display.getMenus (this); + if (menus != null) { + do { + int index = 0; + while (index < menus.length) { + Menu menu = menus [index]; + if (menu != null && !menu.isDisposed ()) { + while (menu.getParentMenu () != null) { + menu = menu.getParentMenu (); + } + menu.dispose (); + break; + } + index++; + } + if (index == menus.length) break; + } while (true); + } + menus = null; super.releaseWidget (); defaultButton = saveDefault = null; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java index f1407571cd..c56d1af112 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java @@ -576,6 +576,24 @@ int getLastEventTime () { return (int) System.currentTimeMillis (); } +Menu [] getMenus (Decorations shell) { + if (menus == null) return new Menu [0]; + int count = 0; + for (int i = 0; i < menus.length; i++) { + Menu menu = menus[i]; + if (menu != null && menu.parent == shell) count++; + } + int index = 0; + Menu[] result = new Menu[count]; + for (int i = 0; i < menus.length; i++) { + Menu menu = menus[i]; + if (menu != null && menu.parent == shell) { + result[index++] = menu; + } + } + return result; +} + Menu getMenuBar () { return menuBar; } |