Skip to content
Snippets Groups Projects
Verified Commit aaf4bd86 authored by Giacomo Caironi's avatar Giacomo Caironi
Browse files

Fix tabs crash

parent c5b6f974
Branches
Tags
No related merge requests found
...@@ -59,9 +59,7 @@ void DefaultModule::onSkywardHubContextMenuRequested(QMenu& menu, const QPoint& ...@@ -59,9 +59,7 @@ void DefaultModule::onSkywardHubContextMenuRequested(QMenu& menu, const QPoint&
void DefaultModule::addDefaultActionsToMenu() { void DefaultModule::addDefaultActionsToMenu() {
QAction* close = new QAction("Close"); QAction* close = new QAction("Close");
connect(close, &QAction::triggered, this, [this]() { connect(close, &QAction::triggered, this, &DefaultModule::onCloseClicked);
delete this;
});
QAction* replace = new QAction("Replace"); QAction* replace = new QAction("Replace");
connect(replace, &QAction::triggered, this, &DefaultModule::onReplaceClicked); connect(replace, &QAction::triggered, this, &DefaultModule::onReplaceClicked);
...@@ -70,12 +68,8 @@ void DefaultModule::addDefaultActionsToMenu() { ...@@ -70,12 +68,8 @@ void DefaultModule::addDefaultActionsToMenu() {
addActionToMenu(replace); addActionToMenu(replace);
} }
void DefaultModule::addActionToMenu(QAction* action) { void DefaultModule::onCloseClicked() {
menuActions.append(action); delete this;
}
void DefaultModule::showMenuActionsInSeparatedMenu(const QString& menuName) {
this->menuName = menuName;
} }
void DefaultModule::onReplaceClicked() { void DefaultModule::onReplaceClicked() {
...@@ -86,6 +80,14 @@ void DefaultModule::onReplaceClicked() { ...@@ -86,6 +80,14 @@ void DefaultModule::onReplaceClicked() {
} }
} }
void DefaultModule::addActionToMenu(QAction* action) {
menuActions.append(action);
}
void DefaultModule::showMenuActionsInSeparatedMenu(const QString& menuName) {
this->menuName = menuName;
}
void DefaultModule::addCustomActionsToMenu() { void DefaultModule::addCustomActionsToMenu() {
} }
......
...@@ -30,6 +30,7 @@ class DefaultModule : public QWidget, public Module { ...@@ -30,6 +30,7 @@ class DefaultModule : public QWidget, public Module {
void showMenuActionsInSeparatedMenu(const QString &menuName); void showMenuActionsInSeparatedMenu(const QString &menuName);
virtual void onReplaceClicked(); virtual void onReplaceClicked();
virtual void onCloseClicked();
private: private:
SkywardHubCoreProxy proxyCore; SkywardHubCoreProxy proxyCore;
......
...@@ -19,9 +19,10 @@ TabsModule::TabsModule(QWidget* parent) ...@@ -19,9 +19,10 @@ TabsModule::TabsModule(QWidget* parent)
} }
TabsModule::~TabsModule() { TabsModule::~TabsModule() {
for(auto it = contentModules.begin(); it != contentModules.end(); ++it) for(auto it = contentModules.begin(); it != contentModules.end(); ++it){
delete *it; delete *it;
} }
}
QWidget* TabsModule::toWidget() { QWidget* TabsModule::toWidget() {
...@@ -80,7 +81,7 @@ void TabsModule::fromXmlObject(const XmlObject& xmlObject) { ...@@ -80,7 +81,7 @@ void TabsModule::fromXmlObject(const XmlObject& xmlObject) {
void TabsModule::addTab(const QString& tabName, Module* module) { void TabsModule::addTab(const QString& tabName, Module* module) {
connect(module->getModuleEventsHandler(), &ModuleEventsHandler::replaceMeWith, this, &TabsModule::replaceTabContent); connect(module->getModuleEventsHandler(), &ModuleEventsHandler::replaceMeWith, this, &TabsModule::replaceTabContent);
connect(module->getModuleEventsHandler(), &ModuleEventsHandler::contextMenuRequest, this, &TabsModule::onSkywardHubContextMenuRequested); connect(module->getModuleEventsHandler(), &ModuleEventsHandler::contextMenuRequest, this, &TabsModule::onSkywardHubContextMenuRequested);
connect(module->getModuleEventsHandler(), &ModuleEventsHandler::beforeDelete, this, &TabsModule::deleteTab); connect(module->getModuleEventsHandler(), &ModuleEventsHandler::beforeDelete, this, &TabsModule::onTabDeleted);
auto* listItem = new QListWidgetItem(); auto* listItem = new QListWidgetItem();
listItem->setText(tabName); listItem->setText(tabName);
...@@ -99,6 +100,7 @@ QString TabsModule::generateUniqueTabName() { ...@@ -99,6 +100,7 @@ QString TabsModule::generateUniqueTabName() {
} }
void TabsModule::replaceTabContent(Module* from, Module* to) { void TabsModule::replaceTabContent(Module* from, Module* to) {
int index = contentModules.indexOf(from); int index = contentModules.indexOf(from);
if(index == -1) if(index == -1)
...@@ -115,13 +117,13 @@ void TabsModule::replaceTabContent(Module* from, Module* to) { ...@@ -115,13 +117,13 @@ void TabsModule::replaceTabContent(Module* from, Module* to) {
// Connect the module to the slots // Connect the module to the slots
connect(to->getModuleEventsHandler(), &ModuleEventsHandler::replaceMeWith, this, &TabsModule::replaceTabContent); connect(to->getModuleEventsHandler(), &ModuleEventsHandler::replaceMeWith, this, &TabsModule::replaceTabContent);
connect(to->getModuleEventsHandler(), &ModuleEventsHandler::contextMenuRequest, this, &TabsModule::onSkywardHubContextMenuRequested); connect(to->getModuleEventsHandler(), &ModuleEventsHandler::contextMenuRequest, this, &TabsModule::onSkywardHubContextMenuRequested);
connect(to->getModuleEventsHandler(), &ModuleEventsHandler::beforeDelete, this, &TabsModule::deleteTab); connect(to->getModuleEventsHandler(), &ModuleEventsHandler::beforeDelete, this, &TabsModule::onTabDeleted);
// forces UI update // forces UI update
tabContents->update(); tabContents->update();
} }
void TabsModule::deleteTab(Module* module) { void TabsModule::onTabDeleted(Module* module) {
int index = contentModules.indexOf(module); int index = contentModules.indexOf(module);
if(index == -1) if(index == -1)
...@@ -130,7 +132,6 @@ void TabsModule::deleteTab(Module* module) { ...@@ -130,7 +132,6 @@ void TabsModule::deleteTab(Module* module) {
contentModules.removeAt(index); contentModules.removeAt(index);
tabContents->removeWidget(tabContents->widget(index)); tabContents->removeWidget(tabContents->widget(index));
tabNames->takeItem(index); tabNames->takeItem(index);
delete module;
if(contentModules.isEmpty()) { if(contentModules.isEmpty()) {
emit getModuleEventsHandler()->replaceMeWith(this, getCore()->getModulesManager()->instantiateDefaultModule()); emit getModuleEventsHandler()->replaceMeWith(this, getCore()->getModulesManager()->instantiateDefaultModule());
...@@ -167,7 +168,7 @@ void TabsModule::onMenuNewTabClick() { ...@@ -167,7 +168,7 @@ void TabsModule::onMenuNewTabClick() {
} }
void TabsModule::onMenuDeleteTabClick() { void TabsModule::onMenuDeleteTabClick() {
deleteTab(contentModules.at(tabNames->currentRow())); delete contentModules.at(tabNames->currentRow());
} }
void TabsModule::onMenuRenameTabClick() { void TabsModule::onMenuRenameTabClick() {
......
...@@ -23,7 +23,7 @@ class TabsModule : public DefaultModule { ...@@ -23,7 +23,7 @@ class TabsModule : public DefaultModule {
void fromXmlObject(const XmlObject& xmlObject) override; void fromXmlObject(const XmlObject& xmlObject) override;
protected slots: protected slots:
void deleteTab(Module* module); void onTabDeleted(Module* module);
void replaceTabContent(Module* from, Module* to); void replaceTabContent(Module* from, Module* to);
void onDoubleClickedItem(QListWidgetItem* item); void onDoubleClickedItem(QListWidgetItem* item);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment