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
No related branches found
No related tags found
No related merge requests found
...@@ -37,8 +37,7 @@ Module::Module(ModuleId id) : id(id) ...@@ -37,8 +37,7 @@ Module::Module(ModuleId id) : id(id)
QAction *close = new QAction("Close"); QAction *close = new QAction("Close");
connect(close, &QAction::triggered, this, connect(close, &QAction::triggered, this,
[this]() [this]() { emit closeMe(this); });
{ emit closeMe(std::shared_ptr<Module>(this)); });
menu.addAction(close); menu.addAction(close);
QAction *replace = new QAction("Replace"); QAction *replace = new QAction("Replace");
...@@ -50,7 +49,7 @@ Module::Module(ModuleId id) : id(id) ...@@ -50,7 +49,7 @@ Module::Module(ModuleId id) : id(id)
if (customContextMenuActions.size() > 0) if (customContextMenuActions.size() > 0)
{ {
menu.addSeparator(); menu.addSeparator();
menu.addActions(customContextMenuActions); this->addActionsToMenu(menu);
} }
// Load hub actions // Load hub actions
...@@ -61,6 +60,14 @@ Module::Module(ModuleId id) : id(id) ...@@ -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; } ModuleId Module::getId() const { return id; }
QString Module::getModuleName() const QString Module::getModuleName() const
......
...@@ -62,5 +62,8 @@ signals: ...@@ -62,5 +62,8 @@ signals:
protected: protected:
ModuleId id; 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