X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/53a2db124c633f80bdb16336084262037d879a2c..e5805c0fde8bfabee79b155fbea761398efa4fc0:/include/wx/msw/menu.h diff --git a/include/wx/msw/menu.h b/include/wx/msw/menu.h index 8262a9f180..f19beacbf7 100644 --- a/include/wx/msw/menu.h +++ b/include/wx/msw/menu.h @@ -67,16 +67,13 @@ public: bool MSWCommand(WXUINT param, WXWORD id); - // semi-private accessors - // get the window which contains this menu - wxWindow *GetWindow() const; - // get the menu handle + // get the native menu handle WXHMENU GetHMenu() const { return m_hMenu; } #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(); } + bool HasAccels() const { return !m_accels.empty(); } + size_t GetAccelCount() const { return m_accels.size(); } size_t CopyAccels(wxAcceleratorEntry *accels) const; // called by wxMenuItem when its accels changes @@ -84,8 +81,32 @@ public: // helper used by wxMenu itself (returns the index in m_accels) int FindAccel(int id) const; + + // used only by wxMDIParentFrame currently but could be useful elsewhere: + // returns a new accelerator table with accelerators for just this menu + // (shouldn't be called if we don't have any accelerators) + wxAcceleratorTable *CreateAccelTable() const; #endif // wxUSE_ACCEL +#if wxUSE_OWNER_DRAWN + + int GetMaxAccelWidth() + { + if (m_maxAccelWidth == -1) + CalculateMaxAccelWidth(); + return m_maxAccelWidth; + } + + void ResetMaxAccelWidth() + { + m_maxAccelWidth = -1; + } + +private: + void CalculateMaxAccelWidth(); + +#endif // wxUSE_OWNER_DRAWN + protected: virtual wxMenuItem* DoAppend(wxMenuItem *item); virtual wxMenuItem* DoInsert(size_t pos, wxMenuItem *item); @@ -115,6 +136,17 @@ private: wxAcceleratorArray m_accels; #endif // wxUSE_ACCEL +#if wxUSE_OWNER_DRAWN + // true if the menu has any ownerdrawn items + bool m_ownerDrawn; + + // the max width of menu items bitmaps + int m_maxBitmapWidth; + + // the max width of menu items accels + int m_maxAccelWidth; +#endif // wxUSE_OWNER_DRAWN + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMenu) }; @@ -183,9 +215,6 @@ public: #endif #if wxUSE_ACCEL - // get the accel table for all the menus - const wxAcceleratorTable& GetAccelTable() const { return m_accelTable; } - // update the accel table (must be called after adding/deleting a menu) void RebuildAccelTable(); #endif // wxUSE_ACCEL @@ -213,10 +242,6 @@ protected: // Return the MSW position for a wxMenu which is sometimes different from // the wxWidgets position. int MSWPositionForWxMenu(wxMenu *menu, int wxpos); -#if wxUSE_ACCEL - // the accelerator table for all accelerators in all our menus - wxAcceleratorTable m_accelTable; -#endif // wxUSE_ACCEL #if defined(__WXWINCE__) && wxUSE_TOOLBAR wxToolBar* m_toolBar;