reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit 6aa209494ee8c01bdf5d3e601674366ba04e5163
parent 3802b5b268a9ca18599ea2bd8cc50e3439e7bd02
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Tue,  2 Feb 2016 01:26:37 -0500

destroy context menus after use

Diffstat:
Msrc/menu.cpp | 10++++++++--
Msrc/menu.hpp | 2++
2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/menu.cpp b/src/menu.cpp @@ -18,9 +18,9 @@ #include "menu.hpp" Menu::Menu(HMENU handle) - : m_handle(handle) + : m_handle(handle), m_ownership(!handle) { - if(!handle) + if(m_ownership) m_handle = CreatePopupMenu(); m_size = GetMenuItemCount(m_handle); @@ -29,6 +29,12 @@ Menu::Menu(HMENU handle) addSeparator(); } +Menu::~Menu() +{ + if(m_ownership) + DestroyMenu(m_handle); +} + UINT Menu::addAction(const auto_char *label, const int commandId) { MENUITEMINFO mii{}; diff --git a/src/menu.hpp b/src/menu.hpp @@ -29,6 +29,7 @@ class Menu { public: Menu(HMENU handle = 0); + ~Menu(); unsigned int size() { return m_size; } bool empty() const { return m_size == 0; } @@ -50,6 +51,7 @@ private: void append(MENUITEMINFO &); HMENU m_handle; + bool m_ownership; UINT m_size; };