From 452311e2d97dba0652171fc72ba2f511bcf3436f Mon Sep 17 00:00:00 2001 From: "hyatt%netscape.com" Date: Thu, 19 Aug 1999 22:10:24 +0000 Subject: [PATCH] Checking in a tweak to menu bar listener, and adding some popup set code. --- layout/xul/base/makefile.win | 2 +- layout/xul/base/src/nsMenuBarListener.cpp | 4 +-- layout/xul/base/src/nsPopupSetFrame.cpp | 33 ++++++++++++++++++++++- layout/xul/base/src/nsPopupSetFrame.h | 26 +++++++++++------- 4 files changed, 51 insertions(+), 14 deletions(-) diff --git a/layout/xul/base/makefile.win b/layout/xul/base/makefile.win index 340e052abfb6..44f932a93a4b 100644 --- a/layout/xul/base/makefile.win +++ b/layout/xul/base/makefile.win @@ -17,6 +17,6 @@ DEPTH=..\..\.. -DIRS=src +DIRS=public src include <$(DEPTH)\config\rules.mak> diff --git a/layout/xul/base/src/nsMenuBarListener.cpp b/layout/xul/base/src/nsMenuBarListener.cpp index 7d4e501e4608..499ba00b5234 100644 --- a/layout/xul/base/src/nsMenuBarListener.cpp +++ b/layout/xul/base/src/nsMenuBarListener.cpp @@ -70,7 +70,7 @@ nsMenuBarListener::QueryInterface(REFNSIID aIID, void** aInstancePtr) } if (aIID.Equals(nsCOMTypeInfo::GetIID())) { - *aInstancePtr = (void*)(nsIDOMEventListener*)(nsIDOMMouseMotionListener*)this; + *aInstancePtr = (void*)(nsIDOMEventListener*)(nsIDOMKeyListener*)this; NS_ADDREF_THIS(); return NS_OK; } @@ -80,7 +80,7 @@ nsMenuBarListener::QueryInterface(REFNSIID aIID, void** aInstancePtr) return NS_OK; } if (aIID.Equals(nsCOMTypeInfo::GetIID())) { - *aInstancePtr = (void*)(nsISupports*)(nsIDOMMouseMotionListener*)this; + *aInstancePtr = (void*)(nsISupports*)(nsIDOMKeyListener*)this; NS_ADDREF_THIS(); return NS_OK; } diff --git a/layout/xul/base/src/nsPopupSetFrame.cpp b/layout/xul/base/src/nsPopupSetFrame.cpp index c47b97837554..1a7b05c7b647 100644 --- a/layout/xul/base/src/nsPopupSetFrame.cpp +++ b/layout/xul/base/src/nsPopupSetFrame.cpp @@ -78,7 +78,16 @@ NS_IMETHODIMP nsPopupSetFrame::QueryInterface(REFNSIID aIID, void** aInstancePtr { if (NULL == aInstancePtr) { return NS_ERROR_NULL_POINTER; - } + } + + *aInstancePtr = NULL; + + if (aIID.Equals(nsIPopupSetFrame::GetIID())) { + *aInstancePtr = (void*)(nsIPopupSetFrame*) this; + NS_ADDREF_THIS(); + return NS_OK; + } + return nsBoxFrame::QueryInterface(aIID, aInstancePtr); } @@ -354,3 +363,25 @@ nsPopupSetFrame::AppendFrames(nsIPresContext& aPresContext, return rv; } + +NS_IMETHODIMP +nsPopupSetFrame::CreatePopup(nsIFrame* aElementFrame, nsIContent* aPopupContent, + PRInt32 aXPos, PRInt32 aYPos, + const nsString& aPopupType, const nsString& anAnchorAlignment, + const nsString& aPopupAlignment) +{ + // Generate the popup. + //MarkAsGenerated(aPopupContent); + + // Now we'll have it in our child frame list. Make it our active child. + //SetActiveChild(aPopupContent); + + // Show the popup at the specified position. + mXPos = aXPos; + mYPos = aYPos; + + // Mark the view as active. + //ActivateMenuPopup(PR_TRUE); + + return NS_OK; +} diff --git a/layout/xul/base/src/nsPopupSetFrame.h b/layout/xul/base/src/nsPopupSetFrame.h index 560454e38d2e..9039c39dc754 100644 --- a/layout/xul/base/src/nsPopupSetFrame.h +++ b/layout/xul/base/src/nsPopupSetFrame.h @@ -27,6 +27,7 @@ #include "nsIAtom.h" #include "nsCOMPtr.h" +#include "nsIPopupSetFrame.h" #include "nsIAnonymousContentCreator.h" #include "nsBoxFrame.h" #include "nsFrameList.h" @@ -37,7 +38,7 @@ nsresult NS_NewPopupSetFrame(nsIFrame** aResult) ; -class nsPopupSetFrame : public nsBoxFrame +class nsPopupSetFrame : public nsBoxFrame, public nsIPopupSetFrame { public: nsPopupSetFrame(); @@ -88,22 +89,27 @@ public: nsIAtom* aListName, nsIFrame* aOldFrame); - /* - void KeyboardNavigation(PRUint32 aDirection, PRBool& aHandledFlag); - void ShortcutNavigation(PRUint32 aLetter, PRBool& aHandledFlag); - void Escape(PRBool& aHandledFlag); - void Enter(); + NS_IMETHOD CreatePopup(nsIFrame* aElementFrame, nsIContent* aPopupContent, + PRInt32 aXPos, PRInt32 aYPos, + const nsString& aPopupType, const nsString& anAnchorAlignment, + const nsString& aPopupAlignment); + + + //void ActivateMenuPopup(PRBool aActivateFlag); - PRBool IsOpen() { return mMenuOpen; }; - protected: - void GetMenuChildrenElement(nsIContent** aResult); -*/ + //void MarkAsGenerated(); + //void SetActiveChild(nsIContent* aPopupContent); protected: nsFrameList mPopupFrames; nsIFrame* mActiveChild; nsIPresContext* mPresContext; // Our pres context. + + PRInt32 mXPos; // Active child's x position + PRInt32 mYPos; // Active child's y position + + }; // class nsPopupSetFrame #endif