| 161 | } |
| 162 | |
| 163 | void BuilderJob::addCustomJob( BuilderJob::BuildType type, KJob* job, ProjectBaseItem* item ) |
| 164 | { |
| 165 | Q_D(BuilderJob); |
| 166 | |
| 167 | if (auto* builderJob = qobject_cast<BuilderJob*>(job)) { |
| 168 | // If a subjob is a builder job itself, re-own its job list to avoid having recursive composite jobs. |
| 169 | const QVector<SubJobData> subjobs = builderJob->d_func()->takeJobList(); |
| 170 | builderJob->deleteLater(); |
| 171 | for (const SubJobData& subjob : subjobs) { |
| 172 | subjob.job->setParent(this); |
| 173 | addSubjob( subjob.job ); |
| 174 | } |
| 175 | d->m_metadata << subjobs; |
| 176 | } else { |
| 177 | job->setParent(this); |
| 178 | addSubjob( job ); |
| 179 | |
| 180 | SubJobData data; |
| 181 | data.type = type; |
| 182 | data.job = job; |
| 183 | data.item = item; |
| 184 | d->m_metadata << data; |
| 185 | } |
| 186 | } |
| 187 | |
| 188 | QVector< SubJobData > BuilderJobPrivate::takeJobList() |
| 189 | { |