diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index f1cadcbc513..8e84ccc54cd 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -294,7 +294,7 @@ void ProjectWindow::handleProfilesChanges() int index = m_tabWidget->currentIndex(); QList projects = m_tabIndexToProject; foreach (ProjectExplorer::Project *project, projects) { - if (m_usesTargetPage.value(project) != useTargetPage(project)) { + if (m_hasTarget.value(project) != hasTarget(project)) { changed = true; deregisterProject(project); registerProject(project); @@ -304,21 +304,9 @@ void ProjectWindow::handleProfilesChanges() m_tabWidget->setCurrentIndex(index); } -bool ProjectWindow::useTargetPage(ProjectExplorer::Project *project) +bool ProjectWindow::hasTarget(ProjectExplorer::Project *project) { - if (project->targets().isEmpty()) - return false; - if (project->targets().size() > 1) - return true; - int count = 0; - QList profiles = ProfileManager::instance()->profiles(); - foreach (Profile *p, profiles) { - if (project->supportsProfile(p)) - ++count; - if (count > 1) - return true; - } - return false; + return !project->targets().isEmpty(); } void ProjectWindow::registerProject(ProjectExplorer::Project *project) @@ -338,25 +326,11 @@ void ProjectWindow::registerProject(ProjectExplorer::Project *project) QStringList subtabs; - bool usesTargetPage = useTargetPage(project); - m_usesTargetPage.insert(project, usesTargetPage); + bool projectHasTarget = hasTarget(project); + m_hasTarget.insert(project, projectHasTarget); - if (!usesTargetPage){ - // Show the target specific pages directly - if (project->activeTarget()) { - QList factories = - ExtensionSystem::PluginManager::getObjects(); - - qSort(factories.begin(), factories.end(), &IPanelFactory::prioritySort); - - foreach (ITargetPanelFactory *factory, factories) - if (factory->supports(project->activeTarget())) - subtabs << factory->displayName(); - } - } else { - // Use the Targets page + if (projectHasTarget) // Use the Targets page subtabs << QCoreApplication::translate("TargetSettingsPanelFactory", "Targets"); - } // Add the project specific pages QList factories = ExtensionSystem::PluginManager::getObjects(); @@ -410,7 +384,7 @@ void ProjectWindow::showProperties(int index, int subIndex) m_previousTargetSubIndex = previousPanelWidget->currentSubIndex(); } - if (m_usesTargetPage.value(project)) { + if (m_hasTarget.value(project)) { if (subIndex == 0) { // Targets page removeCurrentWidget(); @@ -422,32 +396,17 @@ void ProjectWindow::showProperties(int index, int subIndex) m_centralWidget->setCurrentWidget(m_currentWidget); } ++pos; - } else if (project->activeTarget()) { - // No Targets page, target specific pages are first in the list - QList factories = ExtensionSystem::PluginManager::getObjects(); - qSort(factories.begin(), factories.end(), &ITargetPanelFactory::prioritySort); - foreach (ITargetPanelFactory *panelFactory, factories) { - if (panelFactory->supports(project->activeTarget())) { - if (subIndex == pos) { - fac = panelFactory; - break; - } - ++pos; - } - } } - if (!fac) { - QList factories = ExtensionSystem::PluginManager::getObjects(); - qSort(factories.begin(), factories.end(), &IPanelFactory::prioritySort); - foreach (IProjectPanelFactory *panelFactory, factories) { - if (panelFactory->supports(project)) { - if (subIndex == pos) { - fac = panelFactory; - break; - } - ++pos; + QList factories = ExtensionSystem::PluginManager::getObjects(); + qSort(factories.begin(), factories.end(), &IPanelFactory::prioritySort); + foreach (IProjectPanelFactory *panelFactory, factories) { + if (panelFactory->supports(project)) { + if (subIndex == pos) { + fac = panelFactory; + break; } + ++pos; } } diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index 2028f597c32..6fa3d5d19b0 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -93,14 +93,14 @@ private slots: void removedTarget(ProjectExplorer::Target*); private: - bool useTargetPage(ProjectExplorer::Project *project); + bool hasTarget(ProjectExplorer::Project *project); void removeCurrentWidget(); DoubleTabWidget *m_tabWidget; QStackedWidget *m_centralWidget; QWidget *m_currentWidget; QList m_tabIndexToProject; - QMap m_usesTargetPage; + QMap m_hasTarget; int m_previousTargetSubIndex; };