diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index d4fbada62e87aaa29826476010244fda28abbd96..7cffc0f26835d5955eb4c0b79015e90c00582aab 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -229,7 +229,8 @@ void PanelsWidget::addPanelWidget(IPropertiesPanel *panel, int row) ProjectWindow::ProjectWindow(QWidget *parent) : QWidget(parent), - m_currentWidget(0) + m_currentWidget(0), + m_previousTargetSubIndex(-1) { ProjectExplorer::SessionManager *session = ProjectExplorerPlugin::instance()->session(); @@ -375,11 +376,19 @@ void ProjectWindow::showProperties(int index, int subIndex) // Set up custom panels again: int pos = 0; IPanelFactory *fac = 0; + // remember previous sub index state of target settings page + if (TargetSettingsPanelWidget *previousPanelWidget + = qobject_cast<TargetSettingsPanelWidget*>(m_currentWidget)) { + m_previousTargetSubIndex = previousPanelWidget->currentSubIndex(); + } if (project->supportedTargetIds().count() > 1) { if (subIndex == 0) { // Targets page removeCurrentWidget(); - m_currentWidget = new TargetSettingsPanelWidget(project); + TargetSettingsPanelWidget *panelWidget = new TargetSettingsPanelWidget(project); + if (m_previousTargetSubIndex >= 0) + panelWidget->setCurrentSubIndex(m_previousTargetSubIndex); + m_currentWidget = panelWidget; m_centralWidget->addWidget(m_currentWidget); m_centralWidget->setCurrentWidget(m_currentWidget); } diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h index b4bf4fc948bc366eebf0e1b488683e63b6eb3c9a..512e7cafe6d1599318321b942f400596640779d2 100644 --- a/src/plugins/projectexplorer/projectwindow.h +++ b/src/plugins/projectexplorer/projectwindow.h @@ -94,6 +94,7 @@ private: QStackedWidget *m_centralWidget; QWidget *m_currentWidget; QList<ProjectExplorer::Project *> m_tabIndexToProject; + int m_previousTargetSubIndex; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index b40c86f2c23e9a4ad116dc0968252d4d31608640..6de64ac273015ba8d58c9b68aee0724937f0d97e 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -285,3 +285,13 @@ void TargetSettingsPanelWidget::updateTargetAddAndRemoveButtons() m_selector->setAddButtonEnabled(!m_addMenu->actions().isEmpty()); m_selector->setRemoveButtonEnabled(m_project->targets().count() > 1); } + +int TargetSettingsPanelWidget::currentSubIndex() const +{ + return m_selector->currentSubIndex(); +} + +void TargetSettingsPanelWidget::setCurrentSubIndex(int subIndex) +{ + m_selector->setCurrentSubIndex(subIndex); +} diff --git a/src/plugins/projectexplorer/targetsettingspanel.h b/src/plugins/projectexplorer/targetsettingspanel.h index 874263b936dea4e22a5382d4484fc0c7c2fab139..8e01f5c99e2a785161457f0a6c9d43893782c945 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.h +++ b/src/plugins/projectexplorer/targetsettingspanel.h @@ -57,6 +57,9 @@ public: void setupUi(); + int currentSubIndex() const; + void setCurrentSubIndex(int subIndex); + private slots: void currentTargetChanged(int targetIndex, int subIndex); void removeTarget();