fix: ensure all connections to the ProgressDialogs's Task the dialog made are dissconnected

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
This commit is contained in:
Rachel Powers 2024-10-14 00:32:12 -07:00
parent f239f4c17c
commit a108b5b420
No known key found for this signature in database
GPG Key ID: E10E321EB160949B
2 changed files with 14 additions and 9 deletions

View File

@ -90,6 +90,9 @@ void ProgressDialog::on_skipButton_clicked(bool checked)
ProgressDialog::~ProgressDialog() ProgressDialog::~ProgressDialog()
{ {
for (auto conn : this->m_taskConnections) {
disconnect(conn);
}
delete ui; delete ui;
} }
@ -140,15 +143,15 @@ int ProgressDialog::execWithTask(Task* task)
} }
// Connect signals. // Connect signals.
connect(task, &Task::started, this, &ProgressDialog::onTaskStarted); this->m_taskConnections.push_back(connect(task, &Task::started, this, &ProgressDialog::onTaskStarted));
connect(task, &Task::failed, this, &ProgressDialog::onTaskFailed); this->m_taskConnections.push_back(connect(task, &Task::failed, this, &ProgressDialog::onTaskFailed));
connect(task, &Task::succeeded, this, &ProgressDialog::onTaskSucceeded); this->m_taskConnections.push_back(connect(task, &Task::succeeded, this, &ProgressDialog::onTaskSucceeded));
connect(task, &Task::status, this, &ProgressDialog::changeStatus); this->m_taskConnections.push_back(connect(task, &Task::status, this, &ProgressDialog::changeStatus));
connect(task, &Task::details, this, &ProgressDialog::changeStatus); this->m_taskConnections.push_back(connect(task, &Task::details, this, &ProgressDialog::changeStatus));
connect(task, &Task::stepProgress, this, &ProgressDialog::changeStepProgress); this->m_taskConnections.push_back(connect(task, &Task::stepProgress, this, &ProgressDialog::changeStepProgress));
connect(task, &Task::progress, this, &ProgressDialog::changeProgress); this->m_taskConnections.push_back(connect(task, &Task::progress, this, &ProgressDialog::changeProgress));
connect(task, &Task::aborted, this, &ProgressDialog::hide); this->m_taskConnections.push_back(connect(task, &Task::aborted, this, &ProgressDialog::hide));
connect(task, &Task::abortStatusChanged, ui->skipButton, &QPushButton::setEnabled); this->m_taskConnections.push_back(connect(task, &Task::abortStatusChanged, ui->skipButton, &QPushButton::setEnabled));
m_is_multi_step = task->isMultiStep(); m_is_multi_step = task->isMultiStep();
ui->taskProgressScrollArea->setHidden(!m_is_multi_step); ui->taskProgressScrollArea->setHidden(!m_is_multi_step);

View File

@ -94,6 +94,8 @@ class ProgressDialog : public QDialog {
Task* m_task; Task* m_task;
QList<QMetaObject::Connection> m_taskConnections;
bool m_is_multi_step = false; bool m_is_multi_step = false;
QHash<QUuid, SubTaskProgressBar*> taskProgress; QHash<QUuid, SubTaskProgressBar*> taskProgress;
}; };