access keys on menus should work now... not menu items yet...

git-svn-id: svn://10.0.0.236/trunk@38165 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
pavlov%pavlov.net
1999-07-02 22:02:35 +00:00
parent a3d7ccc10e
commit b7f3918cdb
3 changed files with 30 additions and 2 deletions

View File

@@ -82,6 +82,7 @@ nsMenu::nsMenu() : nsIMenu()
mDOMNode = nsnull;
mWebShell = nsnull;
mDOMElement = nsnull;
mAccessKey = "_";
}
//-------------------------------------------------------------------------
@@ -173,12 +174,20 @@ NS_METHOD nsMenu::SetLabel(const nsString &aText)
//-------------------------------------------------------------------------
NS_METHOD nsMenu::GetAccessKey(nsString &aText)
{
aText = mAccessKey;
char *foo = mAccessKey.ToNewCString();
g_print("GetAccessKey returns \"%s\"\n", foo);
delete [] foo;
return NS_OK;
}
//-------------------------------------------------------------------------
NS_METHOD nsMenu::SetAccessKey(const nsString &aText)
{
mAccessKey = aText;
char *foo = mAccessKey.ToNewCString();
g_print("SetAccessKey setting to \"%s\"\n", foo);
delete [] foo;
return NS_OK;
}

View File

@@ -93,6 +93,7 @@ protected:
GtkWidget *GetNativeParent();
nsString mLabel;
nsString mAccessKey;
PRUint32 mNumMenuItems;
GtkWidget *mMenu;

View File

@@ -136,13 +136,28 @@ NS_METHOD nsMenuBar::AddMenu(nsIMenu * aMenu)
nsISupports * supports = nsnull;
aMenu->QueryInterface(kISupportsIID, (void**)&supports);
if(supports){
if (supports) {
mMenusVoidArray.AppendElement(aMenu);
mNumMenus++;
}
aMenu->GetLabel(Label);
// get access key
nsString accessKey = " ";
aMenu->GetAccessKey(accessKey);
if(accessKey != " ")
{
// munge acess key into name
PRInt32 offset = Label.Find(accessKey);
if(offset != -1)
Label.Insert("_", offset);
}
char *foo = Label.ToNewCString();
g_print("%s\n", foo);
delete [] foo;
widget = nsMenuItem::CreateLocalized(Label);
gtk_widget_show(widget);
gtk_menu_bar_append (GTK_MENU_BAR (mMenuBar), widget);
@@ -277,9 +292,11 @@ nsEventStatus nsMenuBar::MenuConstruct(
if (menuElement) {
nsString menuNodeType;
nsString menuName;
nsString menuAccessKey = " ";
menuElement->GetNodeName(menuNodeType);
if (menuNodeType.Equals("menu")) {
menuElement->GetAttribute(nsAutoString("name"), menuName);
menuElement->GetAttribute(nsAutoString("accesskey"), menuAccessKey);
// Don't create the menu yet, just add in the top level names
// Create nsMenu
@@ -292,7 +309,8 @@ nsEventStatus nsMenuBar::MenuConstruct(
pnsMenu->Create(supports, menuName);
NS_RELEASE(supports);
pnsMenu->SetLabel(menuName);
pnsMenu->SetLabel(menuName);
pnsMenu->SetAccessKey(menuAccessKey);
pnsMenu->SetDOMNode(menuNode);
pnsMenu->SetDOMElement(menuElement);
pnsMenu->SetWebShell(mWebShell);