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:
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;
};