summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSilenio Quarti <silenio>2002-12-09 23:23:03 +0000
committerSilenio Quarti <silenio>2002-12-09 23:23:03 +0000
commitbc809b9d76f63a9c71dd9e9bc096d3f86078613d (patch)
tree7dac0e0f11265e820c79e495cca4215a583c3184
parentb70a09d3f09881f2ae6bb70f4f6b1351d6d1bad2 (diff)
downloadeclipse.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.java22
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/carbon/org/eclipse/swt/widgets/Display.java18
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;
}