Loading widget/src/gtk/nsMenu.cpp +9 −5 Original line number Diff line number Diff line Loading @@ -99,10 +99,10 @@ nsMenu::nsMenu() : nsIMenu() //------------------------------------------------------------------------- nsMenu::~nsMenu() { g_print("nsMenu::~nsMenu called\n"); g_print("nsMenu::~nsMenu() called\n"); NS_IF_RELEASE(mListener); // Free our menu items //RemoveAll(); RemoveAll(); } //------------------------------------------------------------------------- Loading Loading @@ -213,9 +213,13 @@ NS_METHOD nsMenu::AddMenuItem(nsIMenuItem * aMenuItem) gtk_menu_shell_append (GTK_MENU_SHELL (mMenu), widget); // XXX add aMenuItem to internal data structor list NS_IF_ADDREF(aMenuItem); mMenuItemVoidArray.AppendElement(aMenuItem); // Need to be adding an nsISupports *, not nsIMenuItem * nsISupports * supports = nsnull; aMenuItem->QueryInterface(kISupportsIID, (void**)&supports); { mMenuItemVoidArray.AppendElement(supports); mNumMenuItems++; } return NS_OK; } Loading widget/src/gtk/nsMenuBar.cpp +11 −8 Original line number Diff line number Diff line Loading @@ -91,7 +91,6 @@ nsMenuBar::nsMenuBar() : nsIMenuBar(), nsIMenuListener() //------------------------------------------------------------------------- nsMenuBar::~nsMenuBar() { g_print("nsMenuBar::~nsMenuBar() called\n"); // Release the menus RemoveAll(); } Loading Loading @@ -198,7 +197,12 @@ NS_METHOD nsMenuBar::RemoveAll() //} NS_RELEASE(menu); ((nsISupports*)mMenusVoidArray[i-1])->Release(); g_print("menu release \n"); int num =((nsISupports*)mMenusVoidArray[i-1])->Release(); while(num) { g_print("menu release again!\n"); num = ((nsISupports*)mMenusVoidArray[i-1])->Release(); } } } } Loading Loading @@ -288,18 +292,17 @@ nsEventStatus nsMenuBar::MenuConstruct( pnsMenu->Create(supports, menuName); NS_RELEASE(supports); pnsMenu->SetLabel(menuName); pnsMenu->SetDOMNode(menuNode); pnsMenu->SetDOMElement(menuElement); pnsMenu->SetWebShell(mWebShell); // Set nsMenu Name pnsMenu->SetLabel(menuName); // Make nsMenu a child of nsMenuBar // nsMenuBar takes ownership of the nsMenu pnsMenuBar->AddMenu(pnsMenu); // Set the WebShell pnsMenu->SetWebShell(mWebShell); // Release the menu now that the menubar owns it //NS_RELEASE(pnsMenu); NS_RELEASE(pnsMenu); } } Loading widget/src/gtk/nsMenuItem.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ nsMenuItem::nsMenuItem() : nsIMenuItem() nsMenuItem::~nsMenuItem() { NS_IF_RELEASE(mTarget); g_print("nsMenuItem::~nsMenuItem called\n"); } //------------------------------------------------------------------------- Loading Loading
widget/src/gtk/nsMenu.cpp +9 −5 Original line number Diff line number Diff line Loading @@ -99,10 +99,10 @@ nsMenu::nsMenu() : nsIMenu() //------------------------------------------------------------------------- nsMenu::~nsMenu() { g_print("nsMenu::~nsMenu called\n"); g_print("nsMenu::~nsMenu() called\n"); NS_IF_RELEASE(mListener); // Free our menu items //RemoveAll(); RemoveAll(); } //------------------------------------------------------------------------- Loading Loading @@ -213,9 +213,13 @@ NS_METHOD nsMenu::AddMenuItem(nsIMenuItem * aMenuItem) gtk_menu_shell_append (GTK_MENU_SHELL (mMenu), widget); // XXX add aMenuItem to internal data structor list NS_IF_ADDREF(aMenuItem); mMenuItemVoidArray.AppendElement(aMenuItem); // Need to be adding an nsISupports *, not nsIMenuItem * nsISupports * supports = nsnull; aMenuItem->QueryInterface(kISupportsIID, (void**)&supports); { mMenuItemVoidArray.AppendElement(supports); mNumMenuItems++; } return NS_OK; } Loading
widget/src/gtk/nsMenuBar.cpp +11 −8 Original line number Diff line number Diff line Loading @@ -91,7 +91,6 @@ nsMenuBar::nsMenuBar() : nsIMenuBar(), nsIMenuListener() //------------------------------------------------------------------------- nsMenuBar::~nsMenuBar() { g_print("nsMenuBar::~nsMenuBar() called\n"); // Release the menus RemoveAll(); } Loading Loading @@ -198,7 +197,12 @@ NS_METHOD nsMenuBar::RemoveAll() //} NS_RELEASE(menu); ((nsISupports*)mMenusVoidArray[i-1])->Release(); g_print("menu release \n"); int num =((nsISupports*)mMenusVoidArray[i-1])->Release(); while(num) { g_print("menu release again!\n"); num = ((nsISupports*)mMenusVoidArray[i-1])->Release(); } } } } Loading Loading @@ -288,18 +292,17 @@ nsEventStatus nsMenuBar::MenuConstruct( pnsMenu->Create(supports, menuName); NS_RELEASE(supports); pnsMenu->SetLabel(menuName); pnsMenu->SetDOMNode(menuNode); pnsMenu->SetDOMElement(menuElement); pnsMenu->SetWebShell(mWebShell); // Set nsMenu Name pnsMenu->SetLabel(menuName); // Make nsMenu a child of nsMenuBar // nsMenuBar takes ownership of the nsMenu pnsMenuBar->AddMenu(pnsMenu); // Set the WebShell pnsMenu->SetWebShell(mWebShell); // Release the menu now that the menubar owns it //NS_RELEASE(pnsMenu); NS_RELEASE(pnsMenu); } } Loading
widget/src/gtk/nsMenuItem.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ nsMenuItem::nsMenuItem() : nsIMenuItem() nsMenuItem::~nsMenuItem() { NS_IF_RELEASE(mTarget); g_print("nsMenuItem::~nsMenuItem called\n"); } //------------------------------------------------------------------------- Loading