From 67fdb6f9af36cba7a0b06e61be320ce914dc3f4f Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 27 Jan 2009 16:45:24 +0000 Subject: [PATCH] added CreateAccelTable() helper which creates the accel table for just this menu git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/msw/menu.h | 9 +++++++-- src/msw/menu.cpp | 11 +++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/include/wx/msw/menu.h b/include/wx/msw/menu.h index 213c9d1675..60f660ccc7 100644 --- a/include/wx/msw/menu.h +++ b/include/wx/msw/menu.h @@ -75,8 +75,8 @@ public: #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,6 +84,11 @@ 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 protected: diff --git a/src/msw/menu.cpp b/src/msw/menu.cpp index 8cae440b7b..32676538ba 100644 --- a/src/msw/menu.cpp +++ b/src/msw/menu.cpp @@ -39,6 +39,8 @@ #include "wx/ownerdrw.h" #endif +#include "wx/ptr_scpd.h" + #include "wx/msw/private.h" #include "wx/msw/wrapcctl.h" // include "properly" @@ -714,6 +716,15 @@ size_t wxMenu::CopyAccels(wxAcceleratorEntry *accels) const return count; } +wxAcceleratorTable *wxMenu::CreateAccelTable() const +{ + const size_t count = m_accels.size(); + wxScopedArray accels(new wxAcceleratorEntry[count]); + CopyAccels(accels.get()); + + return new wxAcceleratorTable(count, accels.get()); +} + #endif // wxUSE_ACCEL // --------------------------------------------------------------------------- -- 2.45.2