forked from qt-creator/qt-creator
ProjectExplorer: Trigger updates more directly
Changes of active run and build config impact some visible state, but
instead of connecting and disconnecting signals to the target, make the
call explicit.
Also, triggering only updateAction is sufficient, as this will already
run updateRunAction. This makes the number of doUpdateRunAction calls
when opening a normal QMake project with one target, three build configs
drops from 17 to 15.
There was some mechanism on the receiver side originally meant to
prevent excessive updates, which broke with 7ae3589
when remembering the
previous configurations was accidentally removed.
This here drops the mechanism completely, as active changed signals
would not trigger twice in succession for the same config anyway.
Change-Id: Id9f87e542d8871733966ab79118734b7e9ad1e8a
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -450,8 +450,6 @@ public:
|
||||
void projectDisplayNameChanged(ProjectExplorer::Project *pro);
|
||||
void startupProjectChanged(); // Calls updateRunAction
|
||||
void activeTargetChanged();
|
||||
void activeRunConfigurationChanged();
|
||||
void activeBuildConfigurationChanged();
|
||||
|
||||
void doUpdateRunActions();
|
||||
|
||||
@@ -2957,50 +2955,8 @@ void ProjectExplorerPluginPrivate::activeTargetChanged()
|
||||
if (target == previousTarget)
|
||||
return;
|
||||
|
||||
if (previousTarget) {
|
||||
disconnect(previousTarget.data(), &Target::activeRunConfigurationChanged,
|
||||
this, &ProjectExplorerPluginPrivate::activeRunConfigurationChanged);
|
||||
disconnect(previousTarget.data(), &Target::activeBuildConfigurationChanged,
|
||||
this, &ProjectExplorerPluginPrivate::activeBuildConfigurationChanged);
|
||||
}
|
||||
previousTarget = target;
|
||||
if (target) {
|
||||
connect(target, &Target::activeRunConfigurationChanged,
|
||||
this, &ProjectExplorerPluginPrivate::activeRunConfigurationChanged);
|
||||
connect(previousTarget.data(), &Target::activeBuildConfigurationChanged,
|
||||
this, &ProjectExplorerPluginPrivate::activeBuildConfigurationChanged);
|
||||
}
|
||||
|
||||
activeBuildConfigurationChanged();
|
||||
activeRunConfigurationChanged();
|
||||
updateDeployActions();
|
||||
}
|
||||
|
||||
void ProjectExplorerPluginPrivate::activeRunConfigurationChanged()
|
||||
{
|
||||
static QPointer<RunConfiguration> previousRunConfiguration = nullptr;
|
||||
RunConfiguration *rc = nullptr;
|
||||
Project *startupProject = SessionManager::startupProject();
|
||||
if (startupProject && startupProject->activeTarget())
|
||||
rc = startupProject->activeTarget()->activeRunConfiguration();
|
||||
if (rc == previousRunConfiguration)
|
||||
return;
|
||||
updateActions();
|
||||
doUpdateRunActions();
|
||||
}
|
||||
|
||||
void ProjectExplorerPluginPrivate::activeBuildConfigurationChanged()
|
||||
{
|
||||
static QPointer<BuildConfiguration> previousBuildConfiguration = nullptr;
|
||||
|
||||
BuildConfiguration *bc = nullptr;
|
||||
if (Target *target = SessionManager::startupTarget())
|
||||
bc = target->activeBuildConfiguration();
|
||||
if (bc == previousBuildConfiguration)
|
||||
return;
|
||||
|
||||
updateActions();
|
||||
doUpdateRunActions();
|
||||
}
|
||||
|
||||
void ProjectExplorerPluginPrivate::updateDeployActions()
|
||||
|
@@ -331,6 +331,7 @@ void Target::setActiveBuildConfiguration(BuildConfiguration *bc)
|
||||
bc != d->m_activeBuildConfiguration)) {
|
||||
d->m_activeBuildConfiguration = bc;
|
||||
emit activeBuildConfigurationChanged(d->m_activeBuildConfiguration);
|
||||
ProjectExplorerPlugin::updateActions();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -467,6 +468,7 @@ void Target::setActiveRunConfiguration(RunConfiguration *rc)
|
||||
rc != d->m_activeRunConfiguration)) {
|
||||
d->m_activeRunConfiguration = rc;
|
||||
emit activeRunConfigurationChanged(d->m_activeRunConfiguration);
|
||||
ProjectExplorerPlugin::updateActions();
|
||||
}
|
||||
updateDeviceState();
|
||||
}
|
||||
|
Reference in New Issue
Block a user