Adding the capability to distinguish menus from menu items.

This commit is contained in:
hyatt%netscape.com 1999-07-23 05:10:57 +00:00
Родитель c1398e2384
Коммит 807fd2cba6
4 изменённых файлов: 26 добавлений и 11 удалений

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

@ -207,7 +207,8 @@ nsMenuBarFrame::GetNextMenuItem(nsIFrame* aStart, nsIFrame** aResult)
// See if it's a menu item.
nsCOMPtr<nsIAtom> tag;
current->GetTag(*getter_AddRefs(tag));
if (tag.get() == nsXULAtoms::xpmenu) {
if (tag.get() == nsXULAtoms::xpmenu ||
tag.get() == nsXULAtoms::xpmenuitem) {
*aResult = currFrame;
return NS_OK;
}
@ -224,7 +225,8 @@ nsMenuBarFrame::GetNextMenuItem(nsIFrame* aStart, nsIFrame** aResult)
// See if it's a menu item.
nsCOMPtr<nsIAtom> tag;
current->GetTag(*getter_AddRefs(tag));
if (tag.get() == nsXULAtoms::xpmenu) {
if (tag.get() == nsXULAtoms::xpmenu ||
tag.get() == nsXULAtoms::xpmenuitem) {
*aResult = currFrame;
return NS_OK;
}
@ -255,7 +257,8 @@ nsMenuBarFrame::GetPreviousMenuItem(nsIFrame* aStart, nsIFrame** aResult)
// See if it's a menu item.
nsCOMPtr<nsIAtom> tag;
current->GetTag(*getter_AddRefs(tag));
if (tag.get() == nsXULAtoms::xpmenu) {
if (tag.get() == nsXULAtoms::xpmenu ||
tag.get() == nsXULAtoms::xpmenuitem) {
*aResult = currFrame;
return NS_OK;
}
@ -272,7 +275,8 @@ nsMenuBarFrame::GetPreviousMenuItem(nsIFrame* aStart, nsIFrame** aResult)
// See if it's a menu item.
nsCOMPtr<nsIAtom> tag;
current->GetTag(*getter_AddRefs(tag));
if (tag.get() == nsXULAtoms::xpmenu) {
if (tag.get() == nsXULAtoms::xpmenu ||
tag.get() == nsXULAtoms::xpmenuitem) {
*aResult = currFrame;
return NS_OK;
}

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

@ -38,7 +38,7 @@
// Wrapper for creating a new menu popup container
//
nsresult
NS_NewMenuFrame(nsIFrame** aNewFrame)
NS_NewMenuFrame(nsIFrame** aNewFrame, PRInt32 aFlags)
{
NS_PRECONDITION(aNewFrame, "null OUT ptr");
if (nsnull == aNewFrame) {
@ -48,6 +48,8 @@ NS_NewMenuFrame(nsIFrame** aNewFrame)
if ( !it )
return NS_ERROR_OUT_OF_MEMORY;
*aNewFrame = it;
if (aFlags)
it->SetIsMenu(PR_TRUE);
return NS_OK;
}
@ -76,7 +78,7 @@ NS_IMETHODIMP nsMenuFrame::QueryInterface(REFNSIID aIID, void** aInstancePtr)
// nsMenuFrame cntr
//
nsMenuFrame::nsMenuFrame()
:mMenuOpen(PR_FALSE),mMenuParent(nsnull)
:mMenuOpen(PR_FALSE), mIsMenu(PR_FALSE), mMenuParent(nsnull)
{
} // cntr
@ -234,6 +236,9 @@ nsMenuFrame::SelectMenu(PRBool aActivateFlag)
void
nsMenuFrame::OpenMenu(PRBool aActivateFlag)
{
if (!mIsMenu)
return;
nsCOMPtr<nsIContent> child;
GetMenuChildrenElement(getter_AddRefs(child));

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

@ -31,7 +31,7 @@
#include "nsFrameList.h"
#include "nsIMenuParent.h"
nsresult NS_NewMenuFrame(nsIFrame** aResult) ;
nsresult NS_NewMenuFrame(nsIFrame** aResult, PRInt32 aFlags) ;
class nsMenuBarFrame;
class nsMenuPopupFrame;
@ -86,12 +86,14 @@ public:
void SelectFirstItem();
PRBool IsOpen() { return mMenuOpen; };
void SetIsMenu(PRBool aIsMenu) { mIsMenu = aIsMenu; };
protected:
void GetMenuChildrenElement(nsIContent** aResult);
protected:
nsFrameList mPopupFrames;
PRBool mIsMenu; // Whether or not we can even have children or not.
PRBool mMenuOpen;
nsIMenuParent* mMenuParent; // Our parent menu.
}; // class nsMenuFrame

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

@ -235,7 +235,8 @@ nsMenuPopupFrame::GetNextMenuItem(nsIFrame* aStart, nsIFrame** aResult)
// See if it's a menu item.
nsCOMPtr<nsIAtom> tag;
current->GetTag(*getter_AddRefs(tag));
if (tag.get() == nsXULAtoms::xpmenu) {
if (tag.get() == nsXULAtoms::xpmenu ||
tag.get() == nsXULAtoms::xpmenuitem) {
*aResult = currFrame;
return NS_OK;
}
@ -252,7 +253,8 @@ nsMenuPopupFrame::GetNextMenuItem(nsIFrame* aStart, nsIFrame** aResult)
// See if it's a menu item.
nsCOMPtr<nsIAtom> tag;
current->GetTag(*getter_AddRefs(tag));
if (tag.get() == nsXULAtoms::xpmenu) {
if (tag.get() == nsXULAtoms::xpmenu ||
tag.get() == nsXULAtoms::xpmenuitem) {
*aResult = currFrame;
return NS_OK;
}
@ -283,7 +285,8 @@ nsMenuPopupFrame::GetPreviousMenuItem(nsIFrame* aStart, nsIFrame** aResult)
// See if it's a menu item.
nsCOMPtr<nsIAtom> tag;
current->GetTag(*getter_AddRefs(tag));
if (tag.get() == nsXULAtoms::xpmenu) {
if (tag.get() == nsXULAtoms::xpmenu ||
tag.get() == nsXULAtoms::xpmenuitem) {
*aResult = currFrame;
return NS_OK;
}
@ -300,7 +303,8 @@ nsMenuPopupFrame::GetPreviousMenuItem(nsIFrame* aStart, nsIFrame** aResult)
// See if it's a menu item.
nsCOMPtr<nsIAtom> tag;
current->GetTag(*getter_AddRefs(tag));
if (tag.get() == nsXULAtoms::xpmenu) {
if (tag.get() == nsXULAtoms::xpmenu ||
tag.get() == nsXULAtoms::xpmenuitem) {
*aResult = currFrame;
return NS_OK;
}