X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6d6da89ccb7a6aae5cfefe66147a7055ab0854d6..a29c6824c21bca8e66fdd0c7a64b65e8935bdbcd:/include/wx/mac/menu.h?ds=sidebyside diff --git a/include/wx/mac/menu.h b/include/wx/mac/menu.h index 63a2598097..e71cf26809 100644 --- a/include/wx/mac/menu.h +++ b/include/wx/mac/menu.h @@ -1,28 +1,21 @@ ///////////////////////////////////////////////////////////////////////////// // Name: menu.h // Purpose: wxMenu, wxMenuBar classes -// Author: AUTHOR +// Author: Stefan Csomor // Modified by: -// Created: ??/??/98 +// Created: 1998-01-01 // RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence +// Copyright: (c) Stefan Csomor +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_MENU_H_ #define _WX_MENU_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "menu.h" #endif -#if wxUSE_ACCEL - #include "wx/accel.h" - #include "wx/dynarray.h" - - WX_DEFINE_EXPORTED_ARRAY(wxAcceleratorEntry *, wxAcceleratorArray); -#endif // wxUSE_ACCEL - class WXDLLEXPORT wxFrame; // ---------------------------------------------------------------------------- @@ -44,6 +37,7 @@ public: virtual bool DoAppend(wxMenuItem *item); virtual bool DoInsert(size_t pos, wxMenuItem *item); virtual wxMenuItem *DoRemove(wxMenuItem *item); + virtual void Attach(wxMenuBarBase *menubar) ; virtual void Break(); @@ -63,10 +57,15 @@ public: // implementation only from now on // ------------------------------- - bool MacMenuSelect(wxEvtHandler* handler, long when , int macMenuId, int macMenuItemNum) ; - int MacGetIndexFromId( int id ) ; - int MacGetIndexFromItem( wxMenuItem *pItem ) ; - void MacEnableMenu( bool bDoEnable ) ; + int MacGetIndexFromId( int id ) ; + int MacGetIndexFromItem( wxMenuItem *pItem ) ; + void MacEnableMenu( bool bDoEnable ) ; + // MacOS needs to know about submenus somewhere within this menu + // before it can be displayed , also hide special menu items like preferences + // that are handled by the OS + void MacBeforeDisplay( bool isSubMenu ) ; + // undo all changes from the MacBeforeDisplay call + void MacAfterDisplay( bool isSubMenu ) ; // semi-private accessors // get the window which contains this menu @@ -74,19 +73,7 @@ public: // get the menu handle WXHMENU GetHMenu() const { return m_hMenu; } - short MacGetMenuId() { return m_macMenuId ; } -#if wxUSE_ACCEL - // called by wxMenuBar to build its accel table from the accels of all menus - bool HasAccels() const { return !m_accels.IsEmpty(); } - size_t GetAccelCount() const { return m_accels.GetCount(); } - size_t CopyAccels(wxAcceleratorEntry *accels) const; - - // called by wxMenuItem when its accels changes - void UpdateAccel(wxMenuItem *item); - - // helper used by wxMenu itself (returns the index in m_accels) - int FindAccel(int id) const; -#endif // wxUSE_ACCEL + short MacGetMenuId() { return m_macMenuId ; } private: // common part of all ctors @@ -95,19 +82,21 @@ private: // common part of Append/Insert (behaves as Append is pos == (size_t)-1) bool DoInsertOrAppend(wxMenuItem *item, size_t pos = (size_t)-1); + // terminate the current radio group, if any + void EndRadioGroup(); + // if TRUE, insert a breal before appending the next item bool m_doBreak; + // the position of the first item in the current radio group or -1 + int m_startRadioGroup; + // the menu handle of this menu WXHMENU m_hMenu; - short m_macMenuId; + short m_macMenuId; - static short s_macNextMenuId ; -#if wxUSE_ACCEL - // the accelerators for our menu items - wxAcceleratorArray m_accels; -#endif // wxUSE_ACCEL + static short s_macNextMenuId ; DECLARE_DYNAMIC_CLASS(wxMenu) }; @@ -163,25 +152,23 @@ public: // attach to a frame void Attach(wxFrame *frame); -#if wxUSE_ACCEL - // get the accel table for all the menus - const wxAcceleratorTable& GetAccelTable() const { return m_accelTable; } + // clear the invoking window for all menus and submenus + void UnsetInvokingWindow() ; - // update the accel table (must be called after adding/deletign a menu) - void RebuildAccelTable(); -#endif // wxUSE_ACCEL + // set the invoking window for all menus and submenus + void SetInvokingWindow( wxFrame* frame ) ; // if the menubar is modified, the display is not updated automatically, // call this function to update it (m_menuBarFrame should be !NULL) void Refresh(bool eraseBackground = TRUE, const wxRect *rect = (const wxRect *) NULL); void MacInstallMenuBar() ; - void MacMenuSelect(wxEvtHandler* handler, long when , int macMenuId, int macMenuItemNum) ; static wxMenuBar* MacGetInstalledMenuBar() { return s_macInstalledMenuBar ; } protected: // common part of all ctors void Init(); + wxWindow *m_invokingWindow; #if WXWIN_COMPATIBILITY wxEvtHandler *m_eventHandler; @@ -189,13 +176,8 @@ protected: wxArrayString m_titles; -#if wxUSE_ACCEL - // the accelerator table for all accelerators in all our menus - wxAcceleratorTable m_accelTable; -#endif // wxUSE_ACCEL - private: - static wxMenuBar* s_macInstalledMenuBar ; + static wxMenuBar* s_macInstalledMenuBar ; DECLARE_DYNAMIC_CLASS(wxMenuBar) };