summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-05-08 19:53:16 -0400
committerDavid Robillard <d@drobilla.net>2021-05-08 19:53:16 -0400
commit35dcbda281ce508f13e5ef1e524cecabc24ffe87 (patch)
tree02669726bfa4046e7a3682d43324ba19f4ca1047 /src
parent0b413acf900a67d4fd0336e34ba5aa99b6661989 (diff)
downloadpatchage-35dcbda281ce508f13e5ef1e524cecabc24ffe87.tar.gz
patchage-35dcbda281ce508f13e5ef1e524cecabc24ffe87.tar.bz2
patchage-35dcbda281ce508f13e5ef1e524cecabc24ffe87.zip
Use unique_ptr for module menus
Diffstat (limited to 'src')
-rw-r--r--src/CanvasModule.cpp6
-rw-r--r--src/CanvasModule.hpp11
2 files changed, 8 insertions, 9 deletions
diff --git a/src/CanvasModule.cpp b/src/CanvasModule.cpp
index 4b74f9e..86cce34 100644
--- a/src/CanvasModule.cpp
+++ b/src/CanvasModule.cpp
@@ -51,7 +51,6 @@ CanvasModule::CanvasModule(Patchage* app,
double y)
: Module(*app->canvas(), name, x, y)
, _app(app)
- , _menu(nullptr)
, _name(name)
, _type(type)
, _id(std::move(id))
@@ -67,8 +66,6 @@ CanvasModule::CanvasModule(Patchage* app,
CanvasModule::~CanvasModule()
{
_app->canvas()->remove_module(this);
- delete _menu;
- _menu = nullptr;
}
void
@@ -100,7 +97,8 @@ CanvasModule::update_menu()
bool
CanvasModule::show_menu(GdkEventButton* ev)
{
- _menu = new Gtk::Menu();
+ _menu = std::unique_ptr<Gtk::Menu>{new Gtk::Menu()};
+
Gtk::Menu::MenuList& items = _menu->items();
if (_type == SignalDirection::duplex) {
diff --git a/src/CanvasModule.hpp b/src/CanvasModule.hpp
index b8c9523..5259c5b 100644
--- a/src/CanvasModule.hpp
+++ b/src/CanvasModule.hpp
@@ -27,6 +27,7 @@ PATCHAGE_RESTORE_WARNINGS
#include <gdk/gdk.h>
+#include <memory>
#include <string>
namespace Gtk {
@@ -77,11 +78,11 @@ public:
protected:
bool on_event(GdkEvent* ev) override;
- Patchage* _app;
- Gtk::Menu* _menu;
- std::string _name;
- SignalDirection _type;
- ClientID _id;
+ Patchage* _app;
+ std::unique_ptr<Gtk::Menu> _menu;
+ std::string _name;
+ SignalDirection _type;
+ ClientID _id;
};
} // namespace patchage