diff --git a/src/shared/Modules/Module.cpp b/src/shared/Modules/Module.cpp index a3474ea5a461379d9d0c6e3f1241a432b0d95d66..43b12f3ea76625dc14d73909c6224be27f34f0a8 100644 --- a/src/shared/Modules/Module.cpp +++ b/src/shared/Modules/Module.cpp @@ -37,8 +37,7 @@ Module::Module(ModuleId id) : id(id) QAction *close = new QAction("Close"); connect(close, &QAction::triggered, this, - [this]() - { emit closeMe(std::shared_ptr<Module>(this)); }); + [this]() { emit closeMe(this); }); menu.addAction(close); QAction *replace = new QAction("Replace"); @@ -50,7 +49,7 @@ Module::Module(ModuleId id) : id(id) if (customContextMenuActions.size() > 0) { menu.addSeparator(); - menu.addActions(customContextMenuActions); + this->addActionsToMenu(menu); } // Load hub actions @@ -61,6 +60,14 @@ Module::Module(ModuleId id) : id(id) } } +void Module::addActionsToMenu(QMenu &menu) +{ + std::for_each(customContextMenuActions.begin(), + customContextMenuActions.end(), + [&menu](std::unique_ptr<QAction> action) + { menu.addAction(action.get()); }); +} + ModuleId Module::getId() const { return id; } QString Module::getModuleName() const diff --git a/src/shared/Modules/Module.h b/src/shared/Modules/Module.h index 416063ee4eaccb70993542bf97909dc0cece7c76..7d1800bc41953280c92018f094f1d259a972165c 100644 --- a/src/shared/Modules/Module.h +++ b/src/shared/Modules/Module.h @@ -62,5 +62,8 @@ signals: protected: ModuleId id; - QList<QAction*> customContextMenuActions; + QList<std::unique_ptr<QAction>> customContextMenuActions; + +private: + void addActionsToMenu(QMenu& menu); };