From c9f48f87e275ad8eb08d3f257576406a4b4f1e02 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Tue, 26 Sep 2017 15:15:22 +0200 Subject: [PATCH 1/2] MiniProjectTargetSelector: Trigger less list updates Change-Id: I39634ef201ac4a12d5ea114843c73e4558015c05 Reviewed-by: Tim Jenssen Reviewed-by: hjk --- .../miniprojecttargetselector.cpp | 100 +++++++++++------- .../miniprojecttargetselector.h | 12 +-- 2 files changed, 67 insertions(+), 45 deletions(-) diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 46b63e23934..499ef3da691 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -65,8 +65,8 @@ static QIcon createCenteredIcon(const QIcon &icon, const QIcon &overlay) { QPixmap targetPixmap; const qreal appDevicePixelRatio = qApp->devicePixelRatio(); - targetPixmap = QPixmap(Core::Constants::MODEBAR_ICON_SIZE * appDevicePixelRatio, - Core::Constants::MODEBAR_ICON_SIZE * appDevicePixelRatio); + const int deviceSpaceIconSize = static_cast(Core::Constants::MODEBAR_ICON_SIZE * appDevicePixelRatio); + targetPixmap = QPixmap(deviceSpaceIconSize, deviceSpaceIconSize); targetPixmap.setDevicePixelRatio(appDevicePixelRatio); targetPixmap.fill(Qt::transparent); QPainter painter(&targetPixmap); // painter in user space @@ -696,10 +696,10 @@ MiniProjectTargetSelector::MiniProjectTargetSelector(QAction *targetSelectorActi m_listWidgets[i] = new GenericListWidget(this); } + // Validate state: At this point the session is still empty! Project *startup = SessionManager::startupProject(); - changeStartupProject(startup); - if (startup) - activeTargetChanged(startup->activeTarget()); + QTC_CHECK(!startup); + QTC_CHECK(SessionManager::projects().isEmpty()); connect(m_summaryLabel, &QLabel::linkActivated, this, &MiniProjectTargetSelector::switchToProjectsMode); @@ -1017,18 +1017,18 @@ void MiniProjectTargetSelector::handleNewProjectConfiguration(ProjectConfigurati return; } if (auto bc = qobject_cast(pc)) { - addedBuildConfiguration(bc); - updateBuildListVisible(); + if (addedBuildConfiguration(bc)) + updateBuildListVisible(); return; } if (auto dc = qobject_cast(pc)) { - addedDeployConfiguration(dc); - updateDeployListVisible(); + if (addedDeployConfiguration(dc)) + updateDeployListVisible(); return; } if (auto rc = qobject_cast(pc)) { - addedRunConfiguration(rc); - updateRunListVisible(); + if (addedRunConfiguration(rc)) + updateRunListVisible(); return; } } @@ -1045,26 +1045,28 @@ void MiniProjectTargetSelector::handleRemovalOfProjectConfiguration(ProjectConfi return; } if (auto bc = qobject_cast(pc)) { - removedBuildConfiguration(bc); - updateBuildListVisible(); + if (removedBuildConfiguration(bc)) + updateBuildListVisible(); return; } if (auto dc = qobject_cast(pc)) { - removedDeployConfiguration(dc); - updateDeployListVisible(); + if (removedDeployConfiguration(dc)) + updateDeployListVisible(); return; } if (auto rc = qobject_cast(pc)) { - removedRunConfiguration(rc); - updateRunListVisible(); + if (removedRunConfiguration(rc)) + updateRunListVisible(); return; } } void MiniProjectTargetSelector::addedTarget(Target *target) { - if (target->project() == m_project) - m_listWidgets[TARGET]->addProjectConfiguration(target); + if (target->project() != m_project) + return; + + m_listWidgets[TARGET]->addProjectConfiguration(target); foreach (BuildConfiguration *bc, target->buildConfigurations()) addedBuildConfiguration(bc); @@ -1076,8 +1078,10 @@ void MiniProjectTargetSelector::addedTarget(Target *target) void MiniProjectTargetSelector::removedTarget(Target *target) { - if (target->project() == m_project) - m_listWidgets[TARGET]->removeProjectConfiguration(target); + if (target->project() != m_project) + return; + + m_listWidgets[TARGET]->removeProjectConfiguration(target); foreach (BuildConfiguration *bc, target->buildConfigurations()) removedBuildConfiguration(bc); @@ -1087,39 +1091,57 @@ void MiniProjectTargetSelector::removedTarget(Target *target) removedRunConfiguration(rc); } -void MiniProjectTargetSelector::addedBuildConfiguration(BuildConfiguration *bc) +bool MiniProjectTargetSelector::addedBuildConfiguration(BuildConfiguration *bc) { - if (bc->target() == m_target) - m_listWidgets[BUILD]->addProjectConfiguration(bc); + if (bc->target() != m_project->activeTarget()) + return false; + + m_listWidgets[BUILD]->addProjectConfiguration(bc); + return true; } -void MiniProjectTargetSelector::removedBuildConfiguration(BuildConfiguration *bc) +bool MiniProjectTargetSelector::removedBuildConfiguration(BuildConfiguration *bc) { - if (bc->target() == m_target) - m_listWidgets[BUILD]->removeProjectConfiguration(bc); + if (bc->target() == m_project->activeTarget()) + return false; + + m_listWidgets[BUILD]->removeProjectConfiguration(bc); + return true; } -void MiniProjectTargetSelector::addedDeployConfiguration(DeployConfiguration *dc) +bool MiniProjectTargetSelector::addedDeployConfiguration(DeployConfiguration *dc) { - if (dc->target() == m_target) - m_listWidgets[DEPLOY]->addProjectConfiguration(dc); + if (dc->target() != m_project->activeTarget()) + return false; + + m_listWidgets[DEPLOY]->addProjectConfiguration(dc); + return true; } -void MiniProjectTargetSelector::removedDeployConfiguration(DeployConfiguration *dc) +bool MiniProjectTargetSelector::removedDeployConfiguration(DeployConfiguration *dc) { - if (dc->target() == m_target) - m_listWidgets[DEPLOY]->removeProjectConfiguration(dc); + if (dc->target() != m_project->activeTarget()) + return false; + + m_listWidgets[DEPLOY]->removeProjectConfiguration(dc); + return true; } -void MiniProjectTargetSelector::addedRunConfiguration(RunConfiguration *rc) +bool MiniProjectTargetSelector::addedRunConfiguration(RunConfiguration *rc) { - if (rc->target() == m_target) - m_listWidgets[RUN]->addProjectConfiguration(rc); + if (rc->target() != m_project->activeTarget()) + return false; + + m_listWidgets[RUN]->addProjectConfiguration(rc); + return true; } -void MiniProjectTargetSelector::removedRunConfiguration(RunConfiguration *rc) +bool MiniProjectTargetSelector::removedRunConfiguration(RunConfiguration *rc) { - if (rc->target() == m_target) - m_listWidgets[RUN]->removeProjectConfiguration(rc); + if (rc->target() != m_project->activeTarget()) + return false; + + m_listWidgets[RUN]->removeProjectConfiguration(rc); + return true; } void MiniProjectTargetSelector::updateProjectListVisible() diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.h b/src/plugins/projectexplorer/miniprojecttargetselector.h index 0821a2257db..0c2e51a4f42 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.h +++ b/src/plugins/projectexplorer/miniprojecttargetselector.h @@ -163,12 +163,12 @@ private: void switchToProjectsMode(); void addedTarget(Target *target); void removedTarget(Target *target); - void addedBuildConfiguration(BuildConfiguration* bc); - void removedBuildConfiguration(BuildConfiguration* bc); - void addedDeployConfiguration(DeployConfiguration *dc); - void removedDeployConfiguration(DeployConfiguration *dc); - void addedRunConfiguration(RunConfiguration *rc); - void removedRunConfiguration(RunConfiguration *rc); + bool addedBuildConfiguration(BuildConfiguration* bc); + bool removedBuildConfiguration(BuildConfiguration* bc); + bool addedDeployConfiguration(DeployConfiguration *dc); + bool removedDeployConfiguration(DeployConfiguration *dc); + bool addedRunConfiguration(RunConfiguration *rc); + bool removedRunConfiguration(RunConfiguration *rc); void updateProjectListVisible(); void updateTargetListVisible(); From a8410721beca1acb9878453d2ac055c869cd02fb Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 10 Sep 2017 16:27:54 +0300 Subject: [PATCH 2/2] Qbs: Add variable chooser to Run Configuration widget Change-Id: I8b52b4021e640232e722f33ce20229fe4c7280c7 Reviewed-by: Christian Kandeler --- src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index 5ddee4a3ed9..2a54a8e28a4 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -30,6 +30,7 @@ #include "qbsproject.h" #include +#include #include #include #include @@ -336,6 +337,8 @@ QbsRunConfigurationWidget::QbsRunConfigurationWidget(QbsRunConfiguration *rc) connect(m_rc, &RunConfiguration::enabledChanged, this, &QbsRunConfigurationWidget::targetInformationHasChanged); + + Core::VariableChooser::addSupportForChildWidgets(this, rc->macroExpander()); } void QbsRunConfigurationWidget::targetInformationHasChanged()