Skip to content
Snippets Groups Projects
Commit 7c8d084e authored by Raul Radu's avatar Raul Radu
Browse files

[Modules] Final design of Module class w/smart ptr

- Fixed error in Module.cpp: std::shared_ptr<Module>(this) is a mistake
  that can lead to crashes, plus replaceMe accepts raw pointers.
-  customContextMenuActions is now a list of unique pointers since the
   custom actions are stored within the class and used by QT directly.
parent fa39f6d9
Branches
No related tags found
No related merge requests found
......@@ -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
......
......@@ -62,5 +62,8 @@ signals:
protected:
ModuleId id;
QList<QAction*> customContextMenuActions;
QList<std::unique_ptr<QAction>> customContextMenuActions;
private:
void addActionsToMenu(QMenu& menu);
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment