diff --git a/src/akonadi/akonadiconfigdialog.cpp b/src/akonadi/akonadiconfigdialog.cpp --- a/src/akonadi/akonadiconfigdialog.cpp +++ b/src/akonadi/akonadiconfigdialog.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -97,17 +98,21 @@ void ConfigDialog::onAddTriggered() { - Akonadi::AgentTypeDialog dlg(this); - dlg.agentFilterProxyModel()->addMimeTypeFilter(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); - if (dlg.exec()) { - const auto agentType = dlg.agentType(); + auto dlg = QPointer(new AgentTypeDialog(this)); + dlg->agentFilterProxyModel()->addMimeTypeFilter(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); + if (dlg->exec()) { + if (!dlg) + return; + + const auto agentType = dlg->agentType(); if (agentType.isValid()) { auto job = new Akonadi::AgentInstanceCreateJob(agentType, this); job->configure(this); job->start(); } } + delete dlg; } void ConfigDialog::onRemoveTriggered()