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();