diff --git a/src/plugins/projectexplorer/sessiondialog.cpp b/src/plugins/projectexplorer/sessiondialog.cpp
index 89b0a489bb3e7bb635f904f7a43c0f8b55cde98d..911131d9e29528095950291b4203fb6dd4563933 100644
--- a/src/plugins/projectexplorer/sessiondialog.cpp
+++ b/src/plugins/projectexplorer/sessiondialog.cpp
@@ -110,6 +110,11 @@ SessionDialog::SessionDialog(SessionManager *sessionManager, const QString &last
 {
     m_ui.setupUi(this);
 
+    QPushButton *switchButton = m_ui.buttonBox->addButton(tr("Switch to session"),
+                                                          QDialogButtonBox::AcceptRole);
+    connect(switchButton, SIGNAL(clicked()),
+            this, SLOT(switchToSession()));
+
     connect(m_ui.btCreateNew, SIGNAL(clicked()),
             this, SLOT(createNew()));
 
@@ -143,18 +148,6 @@ void SessionDialog::updateActions()
     m_ui.btDelete->setEnabled(enableDelete);
 }
 
-void SessionDialog::accept()
-{
-    // do nothing
-    QDialog::accept();
-}
-
-void SessionDialog::reject()
-{
-    // clear list
-    QDialog::reject();
-}
-
 void SessionDialog::createNew()
 {
     NewSessionInputDialog newSessionInputDialog(m_sessionManager->sessions());
@@ -192,6 +185,15 @@ void SessionDialog::remove()
     m_ui.sessionList->addItems(m_sessionManager->sessions());
 }
 
+void SessionDialog::switchToSession()
+{
+    if (m_ui.sessionList->currentItem()) {
+        QString session = m_ui.sessionList->currentItem()->text();
+        m_sessionManager->loadSession(session);
+    }
+    accept();
+}
+
 } // namespace Internal
 } // namespace ProjectExplorer
 
diff --git a/src/plugins/projectexplorer/sessiondialog.h b/src/plugins/projectexplorer/sessiondialog.h
index aed6c1a696b604bd0d6539f9a0e59f27e2dad7c8..9116ff731b661c195ac61e7804c98ce7f28359e0 100644
--- a/src/plugins/projectexplorer/sessiondialog.h
+++ b/src/plugins/projectexplorer/sessiondialog.h
@@ -47,13 +47,11 @@ class SessionDialog : public QDialog
 public:
     SessionDialog(SessionManager *sessionManager, const QString &lastSession, bool startup);
 
-    void accept();
-    void reject();
-
 private slots:
     void createNew();
     void clone();
     void remove();
+    void switchToSession();
 
     void updateActions();
 
diff --git a/src/plugins/projectexplorer/sessiondialog.ui b/src/plugins/projectexplorer/sessiondialog.ui
index ad11881aaef34185fc59991642a54eb48803be9c..ecc9bbd988bc36dae2a2d18235abbad3369ec389 100644
--- a/src/plugins/projectexplorer/sessiondialog.ui
+++ b/src/plugins/projectexplorer/sessiondialog.ui
@@ -65,7 +65,7 @@
    <item row="1" column="1" colspan="2">
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+      <set>QDialogButtonBox::Close</set>
      </property>
     </widget>
    </item>