diff --git a/src/plugins/projectexplorer/buildtargetinfo.h b/src/plugins/projectexplorer/buildtargetinfo.h index 2f811c48b01..63e7e0748fe 100644 --- a/src/plugins/projectexplorer/buildtargetinfo.h +++ b/src/plugins/projectexplorer/buildtargetinfo.h @@ -35,6 +35,7 @@ #include #include +#include namespace ProjectExplorer { @@ -59,6 +60,22 @@ public: bool isValid() const { return !targetFilePath.isEmpty(); } }; +inline bool operator==(const BuildTargetInfo &ti1, const BuildTargetInfo &ti2) +{ + return ti1.targetFilePath == ti2.targetFilePath; +} + +inline bool operator!=(const BuildTargetInfo &ti1, const BuildTargetInfo &ti2) +{ + return !(ti1 == ti2); +} + +inline uint qHash(const BuildTargetInfo &ti) +{ + return qHash(ti.targetFilePath); +} + + class PROJECTEXPLORER_EXPORT BuildTargetInfoList { public: @@ -79,6 +96,16 @@ public: QList list; }; +inline bool operator==(const BuildTargetInfoList &til1, const BuildTargetInfoList &til2) +{ + return til1.list.toSet() == til2.list.toSet(); +} + +inline bool operator!=(const BuildTargetInfoList &til1, const BuildTargetInfoList &til2) +{ + return !(til1 == til2); +} + } // namespace ProjectExplorer #endif // BUILDTARGETINFO_H diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 040c1c02da3..880f2f88721 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -368,7 +368,10 @@ void Target::setActiveDeployConfiguration(DeployConfiguration *dc) void Target::setDeploymentData(const DeploymentData &deploymentData) { - d->m_deploymentData = deploymentData; + if (d->m_deploymentData != deploymentData) { + d->m_deploymentData = deploymentData; + emit deploymentDataChanged(); + } } DeploymentData Target::deploymentData() const @@ -378,7 +381,10 @@ DeploymentData Target::deploymentData() const void Target::setApplicationTargets(const BuildTargetInfoList &appTargets) { - d->m_appTargets = appTargets; + if (d->m_appTargets != appTargets) { + d->m_appTargets = appTargets; + emit applicationTargetsChanged(); + } } BuildTargetInfoList Target::applicationTargets() const diff --git a/src/plugins/projectexplorer/target.h b/src/plugins/projectexplorer/target.h index 6157c248808..0f8b03c95aa 100644 --- a/src/plugins/projectexplorer/target.h +++ b/src/plugins/projectexplorer/target.h @@ -150,6 +150,9 @@ signals: void deployConfigurationEnabledChanged(); void runConfigurationEnabledChanged(); + void deploymentDataChanged(); + void applicationTargetsChanged(); + // Remove all the signals below, they are stupid /// Emitted whenever the current build configuartion changed or the build directory of the current /// build configuration was changed. diff --git a/src/plugins/remotelinux/abstractpackagingstep.cpp b/src/plugins/remotelinux/abstractpackagingstep.cpp index f002f6988b3..8dcb4f7353e 100644 --- a/src/plugins/remotelinux/abstractpackagingstep.cpp +++ b/src/plugins/remotelinux/abstractpackagingstep.cpp @@ -78,7 +78,7 @@ void AbstractPackagingStep::ctor() SLOT(handleBuildConfigurationChanged())); handleBuildConfigurationChanged(); - connect(project(), SIGNAL(buildSystemEvaluated()), SLOT(setDeploymentDataModified())); + connect(target(), SIGNAL(deploymentDataChanged()), SLOT(setDeploymentDataModified())); setDeploymentDataModified(); connect(this, SIGNAL(unmodifyDeploymentData()), this, SLOT(setDeploymentDataUnmodified())); diff --git a/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.cpp b/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.cpp index d5c951c529d..dfaa1caf5c2 100644 --- a/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.cpp +++ b/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.cpp @@ -73,8 +73,7 @@ void RemoteLinuxDeployConfigurationWidget::init(DeployConfiguration *dc) d->deployConfiguration = qobject_cast(dc); QTC_ASSERT(d->deployConfiguration, return); - connect(dc->target()->project(), SIGNAL(buildSystemEvaluated()), - SLOT(updateDeploymentDataModel())); + connect(dc->target(), SIGNAL(deploymentDataChanged()), SLOT(updateDeploymentDataModel())); updateDeploymentDataModel(); } diff --git a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp index 07650bfc0ee..eb02382723e 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp +++ b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp @@ -126,8 +126,8 @@ void RemoteLinuxRunConfiguration::init() setDefaultDisplayName(defaultDisplayName()); debuggerAspect()->suppressQmlDebuggingSpinbox(); - Project *pro = target()->project(); - connect(pro, SIGNAL(buildSystemEvaluated()), SLOT(handleBuildSystemDataUpdated())); + connect(target(), SIGNAL(deploymentDataChanged()), SLOT(handleBuildSystemDataUpdated())); + connect(target(), SIGNAL(applicationTargetsChanged()), SLOT(handleBuildSystemDataUpdated())); connect(target(), SIGNAL(profileChanged()), this, SLOT(handleBuildSystemDataUpdated())); // Handles device changes, etc. }