зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
a027a5a75b
Коммит
a50a28fae6
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
Загрузка…
Ссылка в новой задаче