fixing a release bug for Pavlov

This commit is contained in:
saari%netscape.com 1999-05-18 21:53:58 +00:00
Родитель fa49382793
Коммит 72d1c21cbd
2 изменённых файлов: 24 добавлений и 19 удалений

Просмотреть файл

@ -100,7 +100,7 @@ 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();
@ -307,7 +307,7 @@ NS_METHOD nsMenu::GetItemCount(PRUint32 &aCount)
{
// this should be right.. does it need to be +1 ?
aCount = g_list_length(GTK_MENU_SHELL(mMenu)->children);
g_print("nsMenu::GetItemCount = %i\n", aCount);
//g_print("nsMenu::GetItemCount = %i\n", aCount);
return NS_OK;
}
@ -352,6 +352,7 @@ NS_METHOD nsMenu::RemoveItem(const PRUint32 aPos)
//-------------------------------------------------------------------------
NS_METHOD nsMenu::RemoveAll()
{
//g_print("nsMenu::RemoveAll()\n");
#if 0
// this doesn't work quite right, but this is about all that should really be needed
int i=0;
@ -368,10 +369,12 @@ NS_METHOD nsMenu::RemoveAll()
if (NS_OK == item->QueryInterface(kIMenuItemIID, (void**)&menuitem)) {
// we do this twice because we have to do it once for QueryInterface,
// then we want to get rid of it.
//g_print("remove nsMenuItem\n");
NS_RELEASE(menuitem);
NS_RELEASE(item);
menuitem = nsnull;
} else if (NS_OK == item->QueryInterface(kIMenuIID, (void**)&menu)) {
//g_print("remove nsMenu\n");
NS_RELEASE(menu);
NS_RELEASE(item);
menu = nsnull;
@ -406,7 +409,7 @@ NS_METHOD nsMenu::RemoveAll()
menu->GetNativeData(&gtkmenu);
if(gtkmenu){
g_print("gtkmenu removed");
//g_print("gtkmenu removed");
//gtk_menu_item_remove_submenu (GTK_MENU_ITEM (item));
}
@ -416,6 +419,7 @@ NS_METHOD nsMenu::RemoveAll()
}
}
#endif
//g_print("end RemoveAll\n");
return NS_OK;
}
@ -490,7 +494,7 @@ nsEventStatus nsMenu::MenuConstruct(const nsMenuEvent & aMenuEvent,
void * menuNode,
void * aWebShell)
{
g_print("nsMenu::MenuConstruct called \n");
//g_print("nsMenu::MenuConstruct called \n");
if(menuNode){
SetDOMNode((nsIDOMNode*)menuNode);
}
@ -537,7 +541,7 @@ nsEventStatus nsMenu::MenuConstruct(const nsMenuEvent & aMenuEvent,
//-------------------------------------------------------------------------
nsEventStatus nsMenu::MenuDestruct(const nsMenuEvent & aMenuEvent)
{
g_print("nsMenu::MenuDestruct called \n");
//g_print("nsMenu::MenuDestruct called \n");
mConstructCalled = PR_FALSE;
RemoveAll();
return nsEventStatus_eIgnore;

Просмотреть файл

@ -98,10 +98,11 @@ nsMenuItem::nsMenuItem() : nsIMenuItem()
//-------------------------------------------------------------------------
nsMenuItem::~nsMenuItem()
{
NS_IF_RELEASE(mTarget);
//g_print("nsMenuItem::~nsMenuItem called\n");
//NS_IF_RELEASE(mTarget);
gtk_widget_destroy(mMenuItem);
mMenuItem = nsnull;
g_print("nsMenuItem::~nsMenuItem called\n");
//g_print("end nsMenuItem::~nsMenuItem\n");
}
//-------------------------------------------------------------------------
@ -299,10 +300,10 @@ NS_METHOD nsMenuItem::IsSeparator(PRBool & aIsSep)
nsEventStatus nsMenuItem::MenuItemSelected(const nsMenuEvent & aMenuEvent)
{
if(!mIsSeparator) {
g_print("nsMenuItem::MenuItemSelected\n");
//g_print("nsMenuItem::MenuItemSelected\n");
DoCommand();
}else{
g_print("nsMenuItem::MenuItemSelected is separator\n");
//g_print("nsMenuItem::MenuItemSelected is separator\n");
}
return nsEventStatus_eIgnore;
}
@ -312,13 +313,13 @@ nsEventStatus nsMenuItem::MenuSelected(const nsMenuEvent & aMenuEvent)
if(mXULCommandListener)
return mXULCommandListener->MenuSelected(aMenuEvent);
g_print("nsMenuItem::MenuSelected\n");
//g_print("nsMenuItem::MenuSelected\n");
return nsEventStatus_eIgnore;
}
//-------------------------------------------------------------------------
nsEventStatus nsMenuItem::MenuDeselected(const nsMenuEvent &aMenuEvent)
{
g_print("nsMenuItem::MenuDeselected\n");
//g_print("nsMenuItem::MenuDeselected\n");
return nsEventStatus_eIgnore;
}
//-------------------------------------------------------------------------
@ -327,13 +328,13 @@ nsEventStatus nsMenuItem::MenuConstruct(const nsMenuEvent &aMenuEvent,
void *menuNode,
void *aWebShell)
{
g_print("nsMenuItem::MenuConstruct\n");
//g_print("nsMenuItem::MenuConstruct\n");
return nsEventStatus_eIgnore;
}
//-------------------------------------------------------------------------
nsEventStatus nsMenuItem::MenuDestruct(const nsMenuEvent &aMenuEvent)
{
g_print("nsMenuItem::MenuDestruct\n");
//g_print("nsMenuItem::MenuDestruct\n");
return nsEventStatus_eIgnore;
}
@ -365,14 +366,14 @@ NS_METHOD nsMenuItem::DoCommand()
contentViewerContainer = do_QueryInterface(mWebShell);
if (!contentViewerContainer) {
NS_ERROR("Webshell doesn't support the content viewer container interface");
g_print("Webshell doesn't support the content viewer container interface");
//g_print("Webshell doesn't support the content viewer container interface");
return rv;
}
nsCOMPtr<nsIContentViewer> contentViewer;
if (NS_FAILED(rv = contentViewerContainer->GetContentViewer(getter_AddRefs(contentViewer)))) {
NS_ERROR("Unable to retrieve content viewer.");
g_print("Unable to retrieve content viewer.");
//g_print("Unable to retrieve content viewer.");
return rv;
}
@ -380,14 +381,14 @@ NS_METHOD nsMenuItem::DoCommand()
docViewer = do_QueryInterface(contentViewer);
if (!docViewer) {
NS_ERROR("Document viewer interface not supported by the content viewer.");
g_print("Document viewer interface not supported by the content viewer.");
//g_print("Document viewer interface not supported by the content viewer.");
return rv;
}
nsCOMPtr<nsIPresContext> presContext;
if (NS_FAILED(rv = docViewer->GetPresContext(*getter_AddRefs(presContext)))) {
NS_ERROR("Unable to retrieve the doc viewer's presentation context.");
g_print("Unable to retrieve the doc viewer's presentation context.");
//g_print("Unable to retrieve the doc viewer's presentation context.");
return rv;
}
@ -400,12 +401,12 @@ NS_METHOD nsMenuItem::DoCommand()
contentNode = do_QueryInterface(mDOMElement);
if (!contentNode) {
NS_ERROR("DOM Node doesn't support the nsIContent interface required to handle DOM events.");
g_print("DOM Node doesn't support the nsIContent interface required to handle DOM events.");
//g_print("DOM Node doesn't support the nsIContent interface required to handle DOM events.");
return rv;
}
rv = contentNode->HandleDOMEvent(*presContext, &event, nsnull, NS_EVENT_FLAG_INIT, status);
g_print("HandleDOMEvent called");
//g_print("HandleDOMEvent called");
return rv;
}