From 01c62fc613fd615c4c8d3138356e80ece68bdace Mon Sep 17 00:00:00 2001 From: "saari%netscape.com" Date: Tue, 6 Apr 1999 22:19:09 +0000 Subject: [PATCH] Mac menus destroying themselves more properly git-svn-id: svn://10.0.0.236/trunk@26555 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/widget/src/mac/nsMenu.cpp | 26 ++++++++++++++++++++++++++ mozilla/widget/src/mac/nsMenuBar.cpp | 8 +++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/mozilla/widget/src/mac/nsMenu.cpp b/mozilla/widget/src/mac/nsMenu.cpp index e23fb95deff..b276f6b0955 100644 --- a/mozilla/widget/src/mac/nsMenu.cpp +++ b/mozilla/widget/src/mac/nsMenu.cpp @@ -94,6 +94,32 @@ nsMenu::~nsMenu() NS_IF_RELEASE(mMenuBarParent); NS_IF_RELEASE(mMenuParent); NS_IF_RELEASE(mListener); + + while(mNumMenuItems) + { + --mNumMenuItems; + + // Figure out what we're releasing + nsIMenuItem * menuitem = nsnull; + ((nsISupports*)mMenuItemVoidArray[mNumMenuItems])->QueryInterface(kIMenuItemIID, (void**) &menuitem); + if(menuitem) + { + // case menuitem + NS_RELEASE(menuitem); // Release our hold + NS_RELEASE(menuitem); // Balance QI + } + else + { + nsIMenu * menu = nsnull; + ((nsISupports*)mMenuItemVoidArray[mNumMenuItems])->QueryInterface(kIMenuIID, (void**) &menu); + if(menu) + { + // case menu + NS_RELEASE(menu); // Release our hold + NS_RELEASE(menu); // Balance QI + } + } + } } //------------------------------------------------------------------------- diff --git a/mozilla/widget/src/mac/nsMenuBar.cpp b/mozilla/widget/src/mac/nsMenuBar.cpp index 0a488ea47e5..07fd088f493 100644 --- a/mozilla/widget/src/mac/nsMenuBar.cpp +++ b/mozilla/widget/src/mac/nsMenuBar.cpp @@ -110,7 +110,6 @@ nsMenuBar::nsMenuBar() : nsIMenuBar(), nsIMenuListener() mOriginalMacMBarHandle = nsnull; mMacMBarHandle = nsnull; mMacMBarHandle = ::GetMenuBar(); // Get a copy of the menu list - //::SetMenuBar(mMacMBarHandle); // Make the copy the current menu list ::ClearMenuBar(); // Clear the copy } @@ -122,6 +121,13 @@ nsMenuBar::nsMenuBar() : nsIMenuBar(), nsIMenuListener() nsMenuBar::~nsMenuBar() { NS_IF_RELEASE(mParent); + + while(mNumMenus) + { + --mNumMenus; + nsIMenu* menu = (nsIMenu*)mMenuVoidArray[mNumMenus]; + NS_IF_RELEASE( menu ); + } } //-------------------------------------------------------------------------