forked from qt-creator/qt-creator
Project: Fix setActiveTarget()
Allow setting to nullptr if no target is available. Change-Id: Id51a176185eeaa31fef827d9ca722da9e62b9232 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -269,18 +269,13 @@ bool Project::removeTarget(Target *target)
|
|||||||
if (BuildManager::isBuilding(target))
|
if (BuildManager::isBuilding(target))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (target == activeTarget()) {
|
|
||||||
if (d->m_targets.size() == 1)
|
|
||||||
SessionManager::setActiveTarget(this, nullptr, SetActive::Cascade);
|
|
||||||
else if (d->m_targets.at(0).get() == target)
|
|
||||||
SessionManager::setActiveTarget(this, d->m_targets.at(1).get(), SetActive::Cascade);
|
|
||||||
else
|
|
||||||
SessionManager::setActiveTarget(this, d->m_targets.at(0).get(), SetActive::Cascade);
|
|
||||||
}
|
|
||||||
|
|
||||||
emit aboutToRemoveProjectConfiguration(target);
|
emit aboutToRemoveProjectConfiguration(target);
|
||||||
emit aboutToRemoveTarget(target);
|
emit aboutToRemoveTarget(target);
|
||||||
auto keep = Utils::take(d->m_targets, target);
|
auto keep = Utils::take(d->m_targets, target);
|
||||||
|
if (target == d->m_activeTarget) {
|
||||||
|
Target *newActiveTarget = (d->m_targets.size() == 0 ? nullptr : d->m_targets.at(0).get());
|
||||||
|
SessionManager::setActiveTarget(this, newActiveTarget, SetActive::Cascade);
|
||||||
|
}
|
||||||
emit removedTarget(target);
|
emit removedTarget(target);
|
||||||
emit removedProjectConfiguration(target);
|
emit removedProjectConfiguration(target);
|
||||||
|
|
||||||
@@ -299,8 +294,12 @@ Target *Project::activeTarget() const
|
|||||||
|
|
||||||
void Project::setActiveTarget(Target *target)
|
void Project::setActiveTarget(Target *target)
|
||||||
{
|
{
|
||||||
if ((!target && d->m_targets.size() > 0) ||
|
if (d->m_activeTarget == target)
|
||||||
(target && Utils::contains(d->m_targets, target) && d->m_activeTarget != target)) {
|
return;
|
||||||
|
|
||||||
|
// Allow to set nullptr just before the last target is removed or when no target exists.
|
||||||
|
if ((!target && d->m_targets.size() == 0) ||
|
||||||
|
(target && Utils::contains(d->m_targets, target))) {
|
||||||
d->m_activeTarget = target;
|
d->m_activeTarget = target;
|
||||||
emit activeProjectConfigurationChanged(d->m_activeTarget);
|
emit activeProjectConfigurationChanged(d->m_activeTarget);
|
||||||
emit activeTargetChanged(d->m_activeTarget);
|
emit activeTargetChanged(d->m_activeTarget);
|
||||||
|
|||||||
Reference in New Issue
Block a user