X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/71908213057690d5452f72b2b9c8e62b53357170..7210c3a12c488fcf469a7d2205603c292ecc4e75:/include/wx/univ/menu.h?ds=sidebyside diff --git a/include/wx/univ/menu.h b/include/wx/univ/menu.h index e5a5a3fa8e..b964b7e869 100644 --- a/include/wx/univ/menu.h +++ b/include/wx/univ/menu.h @@ -12,10 +12,6 @@ #ifndef _WX_UNIV_MENU_H_ #define _WX_UNIV_MENU_H_ -#ifdef __GNUG__ - #pragma interface "menu.h" -#endif - #if wxUSE_ACCEL #include "wx/accel.h" #endif // wxUSE_ACCEL @@ -23,32 +19,18 @@ #include "wx/dynarray.h" // fwd declarations -class WXDLLEXPORT wxMenuInfo; -WX_DECLARE_OBJARRAY(wxMenuInfo, wxMenuInfoArray); - -class wxPopupMenuWindow; - -class WXDLLEXPORT wxRenderer; - -// ---------------------------------------------------------------------------- -// wxMenu helper classes, used in implementation only -// ---------------------------------------------------------------------------- - -// used by wxRenderer -class WXDLLEXPORT wxMenuGeometryInfo -{ -public: - // get the total size of the menu - virtual wxSize GetSize() const = 0; +class WXDLLIMPEXP_FWD_CORE wxMenuInfo; +WX_DECLARE_EXPORTED_OBJARRAY(wxMenuInfo, wxMenuInfoArray); - virtual ~wxMenuGeometryInfo(); -}; +class WXDLLIMPEXP_FWD_CORE wxMenuGeometryInfo; +class WXDLLIMPEXP_FWD_CORE wxPopupMenuWindow; +class WXDLLIMPEXP_FWD_CORE wxRenderer; // ---------------------------------------------------------------------------- // wxMenu // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenu : public wxMenuBase +class WXDLLIMPEXP_CORE wxMenu : public wxMenuBase { public: // ctors and dtor @@ -68,7 +50,7 @@ public: // show this menu at the given position (in screen coords) and optionally // select its first item void Popup(const wxPoint& pos, const wxSize& size, - bool selectFirst = TRUE); + bool selectFirst = true); // dismiss the menu void Dismiss(); @@ -79,11 +61,11 @@ public: // implementation only from here - // do as if this item were clicked, return TRUE if the resulting event was - // processed, FALSE otherwise + // do as if this item were clicked, return true if the resulting event was + // processed, false otherwise bool ClickItem(wxMenuItem *item); - // process the key event, return TRUE if done + // process the key event, return true if done bool ProcessKeyDown(int key); #if wxUSE_ACCEL @@ -93,9 +75,9 @@ public: protected: // implement base class virtuals - virtual bool DoAppend(wxMenuItem *item); - virtual bool DoInsert(size_t pos, wxMenuItem *item); - virtual wxMenuItem *DoRemove(wxMenuItem *item); + virtual wxMenuItem* DoAppend(wxMenuItem *item); + virtual wxMenuItem* DoInsert(size_t pos, wxMenuItem *item); + virtual wxMenuItem* DoRemove(wxMenuItem *item); // common part of DoAppend and DoInsert void OnItemAdded(wxMenuItem *item); @@ -129,6 +111,9 @@ private: // common part of all ctors void Init(); + // terminate the current radio group, if any + void EndRadioGroup(); + // the exact menu geometry is defined by a struct derived from this one // which is opaque and defined by the renderer wxMenuGeometryInfo *m_geometry; @@ -141,9 +126,11 @@ private: wxAcceleratorTable m_accelTable; #endif // wxUSE_ACCEL - // it calls out OnDismiss() - friend wxPopupMenuWindow; + // the position of the first item in the current radio group or -1 + int m_startRadioGroup; + // it calls out OnDismiss() + friend class wxPopupMenuWindow; DECLARE_DYNAMIC_CLASS(wxMenu) }; @@ -151,11 +138,12 @@ private: // wxMenuBar // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenuBar : public wxMenuBarBase +class WXDLLIMPEXP_CORE wxMenuBar : public wxMenuBarBase { public: // ctors and dtor wxMenuBar(long WXUNUSED(style) = 0) { Init(); } + wxMenuBar(size_t n, wxMenu *menus[], const wxString titles[], long style = 0); virtual ~wxMenuBar(); // implement base class virtuals @@ -167,8 +155,8 @@ public: virtual void EnableTop(size_t pos, bool enable); virtual bool IsEnabledTop(size_t pos) const; - virtual void SetLabelTop(size_t pos, const wxString& label); - virtual wxString GetLabelTop(size_t pos) const; + virtual void SetMenuLabel(size_t pos, const wxString& label); + virtual wxString GetMenuLabel(size_t pos) const; virtual void Attach(wxFrame *frame); virtual void Detach(); @@ -176,8 +164,8 @@ public: // get the next item for the givan accel letter (used by wxFrame), return // -1 if none // - // if unique is not NULL, filled with TRUE if there is only one item with - // this accel, FALSE if two or more + // if unique is not NULL, filled with true if there is only one item with + // this accel, false if two or more int FindNextItemForAccel(int idxStart, int keycode, bool *unique = NULL) const; @@ -192,7 +180,7 @@ public: #endif // wxUSE_ACCEL // called by wxMenu when it is dismissed - void OnDismissMenu(bool dismissMenuBar = FALSE); + void OnDismissMenu(bool dismissMenuBar = false); protected: // common part of all ctors @@ -204,7 +192,7 @@ protected: void OnKeyDown(wxKeyEvent& event); void OnKillFocus(wxFocusEvent& event); - // process the mouse move event, return TRUE if we did, FALSE to continue + // process the mouse move event, return true if we did, false to continue // processing as usual // // the coordinates are client coordinates of menubar, convert if necessary @@ -245,7 +233,7 @@ protected: void DoSelectMenu(size_t pos); // popup the currently selected menu - void PopupCurrentMenu(bool selectFirst = TRUE); + void PopupCurrentMenu(bool selectFirst = true); // hide the currently selected menu void DismissMenu(); @@ -256,6 +244,9 @@ protected: // we don't want to have focus except while selecting from menu void GiveAwayFocus(); + // Release the mouse capture if we have it + bool ReleaseMouseCapture(); + // the array containing extra menu info we need wxMenuInfoArray m_menuInfos; @@ -275,7 +266,7 @@ private: bool m_shouldShowMenu; // it calls out ProcessMouseEvent() - friend wxPopupMenuWindow; + friend class wxPopupMenuWindow; DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxMenuBar)