diff --git a/widget/public/nsIMenuBar.h b/widget/public/nsIMenuBar.h index 1166f3b61d4b..c88d3f771cde 100644 --- a/widget/public/nsIMenuBar.h +++ b/widget/public/nsIMenuBar.h @@ -90,6 +90,12 @@ class nsIMenuBar : public nsISupports { * */ NS_IMETHOD GetNativeData(void*& aData) = 0; + + /** + * Draw the menubar + * + */ + NS_IMETHOD Paint() = 0; }; #endif diff --git a/widget/src/gtk/nsMenuBar.cpp b/widget/src/gtk/nsMenuBar.cpp index a288eb362fab..3d2e24e23ab9 100644 --- a/widget/src/gtk/nsMenuBar.cpp +++ b/widget/src/gtk/nsMenuBar.cpp @@ -156,3 +156,8 @@ NS_METHOD nsMenuBar::GetNativeData(void *& aData) return NS_OK; } +//------------------------------------------------------------------------- +NS_METHOD nsMenuBar::Paint() +{ + return NS_OK; +} diff --git a/widget/src/gtk/nsMenuBar.h b/widget/src/gtk/nsMenuBar.h index 51804586ed4b..e3ff8bc9d4be 100644 --- a/widget/src/gtk/nsMenuBar.h +++ b/widget/src/gtk/nsMenuBar.h @@ -21,6 +21,7 @@ #include "nsIMenuBar.h" #include "nsIMenuListener.h" +#include "nsVoidArray.h" class nsIWidget; @@ -52,7 +53,7 @@ public: NS_IMETHOD RemoveMenu(const PRUint32 aCount); NS_IMETHOD RemoveAll(); NS_IMETHOD GetNativeData(void*& aData); - + NS_IMETHOD Paint(); protected: PRUint32 mNumMenus; GtkWidget *mMenu; diff --git a/widget/src/mac/nsMenuBar.cpp b/widget/src/mac/nsMenuBar.cpp index c61a9c01e156..116710923121 100644 --- a/widget/src/mac/nsMenuBar.cpp +++ b/widget/src/mac/nsMenuBar.cpp @@ -25,6 +25,7 @@ #if defined(XP_MAC) #include +#include #endif static NS_DEFINE_IID(kMenuBarIID, NS_IMENUBAR_IID); @@ -49,14 +50,13 @@ nsMenuBar::nsMenuBar() : nsIMenuBar(), nsIMenuListener() { NS_INIT_REFCNT(); mNumMenus = 0; - mMenu = nsnull; + //mMenuVoidArray; mParent = nsnull; mIsMenuBarAdded = PR_FALSE; mOriginalMacMBarHandle = nsnull; mOriginalMacMBarHandle = ::GetMenuBar(); - mMacMBarHandle = mOriginalMacMBarHandle; ::ClearMenuBar(); } @@ -106,12 +106,13 @@ NS_METHOD nsMenuBar::AddMenu(nsIMenu * aMenu) { // XXX add to internal data structure - mMenu = aMenu; + mMenuVoidArray.AppendElement( aMenu ); MenuHandle menuHandle = nsnull; - aMenu->GetNativeData(&menuHandle); + aMenu->GetNativeData(menuHandle); - ::InsertMenu(menuHandle, 0); + ::InsertMenu(menuHandle, mNumMenus); + mNumMenus++; return NS_OK; } @@ -152,3 +153,9 @@ NS_METHOD nsMenuBar::GetNativeData(void *& aData) return NS_OK; } +//------------------------------------------------------------------------- +NS_METHOD nsMenuBar::Paint() +{ + ::DrawMenuBar(); + return NS_OK; +} diff --git a/widget/src/mac/nsMenuBar.h b/widget/src/mac/nsMenuBar.h index 5f8fbd2e8791..1eafc3cbc938 100644 --- a/widget/src/mac/nsMenuBar.h +++ b/widget/src/mac/nsMenuBar.h @@ -21,6 +21,7 @@ #include "nsIMenuBar.h" #include "nsIMenuListener.h" +#include "nsVoidArray.h" class nsIWidget; @@ -52,11 +53,11 @@ public: NS_IMETHOD RemoveMenu(const PRUint32 aCount); NS_IMETHOD RemoveAll(); NS_IMETHOD GetNativeData(void*& aData); - + NS_IMETHOD Paint(); protected: - PRUint32 mNumMenus; - nsIMenu * mMenu; - nsIWidget * mParent; + PRUint32 mNumMenus; + nsVoidArray mMenuVoidArray; + nsIWidget * mParent; PRBool mIsMenuBarAdded; diff --git a/widget/src/motif/nsMenuBar.cpp b/widget/src/motif/nsMenuBar.cpp index fc5adb82b50b..569b199cf566 100644 --- a/widget/src/motif/nsMenuBar.cpp +++ b/widget/src/motif/nsMenuBar.cpp @@ -131,3 +131,8 @@ NS_METHOD nsMenuBar::GetNativeData(void *& aData) return NS_OK; } +//------------------------------------------------------------------------- +NS_METHOD nsMenuBar::Paint() +{ + return NS_OK; +} \ No newline at end of file diff --git a/widget/src/motif/nsMenuBar.h b/widget/src/motif/nsMenuBar.h index 4e5b3f87b463..d9b351733e80 100644 --- a/widget/src/motif/nsMenuBar.h +++ b/widget/src/motif/nsMenuBar.h @@ -24,6 +24,7 @@ #include "nsIMenuBar.h" #include "nsIMenuListener.h" +#include "nsVoidArray.h" class nsIWidget; @@ -55,7 +56,7 @@ public: NS_IMETHOD RemoveMenu(const PRUint32 aCount); NS_IMETHOD RemoveAll(); NS_IMETHOD GetNativeData(void*& aData); - + NS_IMETHOD Paint(); protected: PRUint32 mNumMenus; Widget mMenu; diff --git a/widget/src/windows/nsMenuBar.cpp b/widget/src/windows/nsMenuBar.cpp index 2d1280432f14..776f1093123b 100644 --- a/widget/src/windows/nsMenuBar.cpp +++ b/widget/src/windows/nsMenuBar.cpp @@ -160,3 +160,8 @@ NS_METHOD nsMenuBar::GetNativeData(void *& aData) return NS_OK; } +//------------------------------------------------------------------------- +NS_METHOD nsMenuBar::Paint() +{ + return NS_OK; +} diff --git a/widget/src/windows/nsMenuBar.h b/widget/src/windows/nsMenuBar.h index acd58ef9adb2..f2db10302edc 100644 --- a/widget/src/windows/nsMenuBar.h +++ b/widget/src/windows/nsMenuBar.h @@ -25,6 +25,7 @@ #include "nsIMenuBar.h" #include "nsIMenuListener.h" +#include "nsVoidArray.h" class nsIWidget; @@ -56,7 +57,7 @@ public: NS_IMETHOD RemoveMenu(const PRUint32 aCount); NS_IMETHOD RemoveAll(); NS_IMETHOD GetNativeData(void*& aData); - + NS_IMETHOD Paint(); protected: PRUint32 mNumMenus; HMENU mMenu;