forked from qt-creator/qt-creator
TaskTree: Keep just one done handler
Instead of having separate handlers for done and errorOccurred. This will enable setting just one common done handler with an additional "bool success" argument. Task-number: QTCREATORBUG-29834 Change-Id: I52d826dd89461ff93772a6fe7a85e432d1e84665 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -1089,7 +1089,7 @@ public:
|
||||
// in order to unwind properly.
|
||||
SetupResult start();
|
||||
void stop();
|
||||
void invokeEndHandler(bool success);
|
||||
void invokeDoneHandler(bool success);
|
||||
bool isRunning() const { return m_task || m_container.isRunning(); }
|
||||
bool isTask() const { return bool(m_taskHandler.m_createHandler); }
|
||||
int taskCount() const { return isTask() ? 1 : m_container.m_constData.m_taskCount; }
|
||||
@@ -1451,7 +1451,7 @@ SetupResult TaskNode::start()
|
||||
const std::shared_ptr<SetupResult> unwindAction
|
||||
= std::make_shared<SetupResult>(SetupResult::Continue);
|
||||
QObject::connect(m_task.get(), &TaskInterface::done, taskTree(), [=](bool success) {
|
||||
invokeEndHandler(success);
|
||||
invokeDoneHandler(success);
|
||||
QObject::disconnect(m_task.get(), &TaskInterface::done, taskTree(), nullptr);
|
||||
m_task.release()->deleteLater();
|
||||
QTC_ASSERT(parentContainer() && parentContainer()->isRunning(), return);
|
||||
@@ -1479,16 +1479,14 @@ void TaskNode::stop()
|
||||
|
||||
// TODO: cancelHandler?
|
||||
// TODO: call TaskInterface::stop() ?
|
||||
invokeEndHandler(false);
|
||||
invokeDoneHandler(false);
|
||||
m_task.reset();
|
||||
}
|
||||
|
||||
void TaskNode::invokeEndHandler(bool success)
|
||||
void TaskNode::invokeDoneHandler(bool success)
|
||||
{
|
||||
if (success && m_taskHandler.m_doneHandler)
|
||||
invokeHandler(parentContainer(), m_taskHandler.m_doneHandler, *m_task.get());
|
||||
else if (!success && m_taskHandler.m_errorHandler)
|
||||
invokeHandler(parentContainer(), m_taskHandler.m_errorHandler, *m_task.get());
|
||||
if (m_taskHandler.m_doneHandler)
|
||||
invokeHandler(parentContainer(), m_taskHandler.m_doneHandler, *m_task.get(), success);
|
||||
m_container.m_constData.m_taskTreePrivate->advanceProgress(1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user