Added temporary menu delegate code. This enables menus to invoke JavaScript

BUT it menus can't observe changes or broadcasts
This commit is contained in:
rods%netscape.com 1999-02-18 17:13:30 +00:00
Родитель a027a5a75b
Коммит a50a28fae6
3 изменённых файлов: 19 добавлений и 10 удалений

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

@ -485,9 +485,9 @@ void nsWebShellWindow::LoadMenus(nsIDOMDocument * aDOMDoc, nsIWidget * aParentWi
pnsMenuItem->SetLabel(menuitemName); pnsMenuItem->SetLabel(menuitemName);
// Make nsMenuItem a child of nsMenu // Make nsMenuItem a child of nsMenu
pnsMenu->AddMenuItem(pnsMenuItem); // XXX adds an additional item pnsMenu->AddMenuItem(pnsMenuItem); // XXX adds an additional item
/*
ConnectCommandToOneGUINode(menuitemNode); //ConnectCommandToOneGUINode(menuitemNode);
#if 1
//----------------------------------------------------------- //-----------------------------------------------------------
// This block contains temporary menu hookup code. // This block contains temporary menu hookup code.
//----------------------------------------------------------- //-----------------------------------------------------------
@ -496,19 +496,26 @@ void nsWebShellWindow::LoadMenus(nsIDOMDocument * aDOMDoc, nsIWidget * aParentWi
if (!domElement) if (!domElement)
return; return;
nsAutoString cmdAtom("cmd"); nsAutoString cmdAtom("onClick");
nsString cmdName; nsString cmdName;
domElement->GetAttribute(cmdAtom, cmdName); domElement->GetAttribute(cmdAtom, cmdName);
nsCOMPtr<nsIXULCommand> cmd(FindCommandByName(cmdName));
if (cmd) { nsXULCommand * xulCmd = new nsXULCommand();
nsCOMPtr<nsIMenuListener> listener(do_QueryInterface(cmd)); xulCmd->SetName(cmdName);
pnsMenuItem->AddMenuListener(listener); xulCmd->SetCommand(cmdName);
xulCmd->SetWebShell(mWebShell);
xulCmd->SetDOMElement(domElement);
nsIXULCommand * icmd;
if (NS_OK == xulCmd->QueryInterface(kIXULCommandIID, (void**) &icmd)) {
mMenuDelegates.AppendElement(icmd);
} }
nsCOMPtr<nsIMenuListener> listener(do_QueryInterface(icmd));
pnsMenuItem->AddMenuListener(listener);
} }
//----------------------------------------------------------- //-----------------------------------------------------------
*/ #endif
} }
} else if (menuitemNodeType.Equals("separator")) { } else if (menuitemNodeType.Equals("separator")) {
pnsMenu->AddSeparator(); pnsMenu->AddSeparator();

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

@ -122,6 +122,8 @@ protected:
nsIDOMCharacterData* mStatusText; nsIDOMCharacterData* mStatusText;
nsIDOMHTMLInputElement* mURLBarText; nsIDOMHTMLInputElement* mURLBarText;
nsIDOMHTMLImageElement* mThrobber; nsIDOMHTMLImageElement* mThrobber;
nsVoidArray mMenuDelegates;
}; };

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

@ -350,7 +350,7 @@ nsresult nsXULCommand::KeyPress(nsIDOMEvent* aKeyEvent)
nsEventStatus nsXULCommand::MenuSelected(const nsMenuEvent & aMenuEvent) nsEventStatus nsXULCommand::MenuSelected(const nsMenuEvent & aMenuEvent)
{ {
DoCommand(); DoCommand();
return nsEventStatus_eIgnore;//nsEventStatus_eConsumeNoDefault; return nsEventStatus_eConsumeNoDefault;
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------