diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h
index 5b997d30ebe1ef99f723e7ef2f35f60565aa47e9..1bdc864a0743fecbc15846c154cff43cbde5f2c2 100644
--- a/src/plugins/coreplugin/coreconstants.h
+++ b/src/plugins/coreplugin/coreconstants.h
@@ -98,6 +98,7 @@ const char EXIT[]                  = "QtCreator.Exit";
 
 const char OPTIONS[]               = "QtCreator.Options";
 const char TOGGLE_SIDEBAR[]        = "QtCreator.ToggleSidebar";
+const char TOGGLE_MODE_SELECTOR[]  = "QtCreator.ToggleModeSelector";
 const char TOGGLE_FULLSCREEN[]     = "QtCreator.ToggleFullScreen";
 
 const char MINIMIZE_WINDOW[]       = "QtCreator.MinimizeWindow";
diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp
index c4079e4d91870a9e644e6000b9a3c9adf28a5ce3..4ef2fc897a36ad25858059d1de2318f88f7cf1d7 100644
--- a/src/plugins/coreplugin/fancytabwidget.cpp
+++ b/src/plugins/coreplugin/fancytabwidget.cpp
@@ -427,8 +427,14 @@ FancyTabWidget::FancyTabWidget(QWidget *parent)
     connect(m_tabBar, SIGNAL(currentChanged(int)), this, SLOT(showWidget(int)));
 }
 
-void FancyTabWidget::setSelectionWidgetHidden(bool hidden) {
-    m_selectionWidget->setHidden(hidden);
+void FancyTabWidget::setSelectionWidgetVisible(bool visible)
+{
+    m_selectionWidget->setVisible(visible);
+}
+
+bool FancyTabWidget::isSelectionWidgetVisible() const
+{
+    return m_selectionWidget->isVisible();
 }
 
 void FancyTabWidget::insertTab(int index, QWidget *tab, const QIcon &icon, const QString &label)
@@ -456,17 +462,19 @@ void FancyTabWidget::setBackgroundBrush(const QBrush &brush)
 void FancyTabWidget::paintEvent(QPaintEvent *event)
 {
     Q_UNUSED(event)
-    QPainter painter(this);
-
-    QRect rect = m_selectionWidget->rect().adjusted(0, 0, 1, 0);
-    rect = style()->visualRect(layoutDirection(), geometry(), rect);
-    Utils::StyleHelper::verticalGradient(&painter, rect, rect);
-    painter.setPen(Utils::StyleHelper::borderColor());
-    painter.drawLine(rect.topRight(), rect.bottomRight());
-
-    QColor light = Utils::StyleHelper::sidebarHighlight();
-    painter.setPen(light);
-    painter.drawLine(rect.bottomLeft(), rect.bottomRight());
+    if (m_selectionWidget->isVisible()) {
+        QPainter painter(this);
+
+        QRect rect = m_selectionWidget->rect().adjusted(0, 0, 1, 0);
+        rect = style()->visualRect(layoutDirection(), geometry(), rect);
+        Utils::StyleHelper::verticalGradient(&painter, rect, rect);
+        painter.setPen(Utils::StyleHelper::borderColor());
+        painter.drawLine(rect.topRight(), rect.bottomRight());
+
+        QColor light = Utils::StyleHelper::sidebarHighlight();
+        painter.setPen(light);
+        painter.drawLine(rect.bottomLeft(), rect.bottomRight());
+    }
 }
 
 void FancyTabWidget::insertCornerWidget(int pos, QWidget *widget)
diff --git a/src/plugins/coreplugin/fancytabwidget.h b/src/plugins/coreplugin/fancytabwidget.h
index b1556b82a8de3fb44f1839c07751b7cb04f69407..45441df4a5ae0b2483d667a74943367e895e245a 100644
--- a/src/plugins/coreplugin/fancytabwidget.h
+++ b/src/plugins/coreplugin/fancytabwidget.h
@@ -159,13 +159,15 @@ public:
     void setTabEnabled(int index, bool enable);
     bool isTabEnabled(int index) const;
 
+    bool isSelectionWidgetVisible() const;
+
 signals:
     void currentAboutToShow(int index);
     void currentChanged(int index);
 
 public slots:
     void setCurrentIndex(int index);
-    void setSelectionWidgetHidden(bool hidden);
+    void setSelectionWidgetVisible(bool visible);
 
 private slots:
     void showWidget(int index);
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index 49468aba65c3d6a707eaa6e95316fcd499effff1..7edb9df5da6749e5f44ef8f433ce6c7a7b6e4e56 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -139,6 +139,7 @@ MainWindow::MainWindow() :
     m_modeManager(0),
     m_mimeDatabase(new MimeDatabase),
     m_helpManager(new HelpManager),
+    m_modeStack(new FancyTabWidget(this)),
     m_navigationWidget(0),
     m_rightPaneWidget(0),
     m_versionDialog(0),
@@ -195,14 +196,14 @@ MainWindow::MainWindow() :
     setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
     setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea);
 
+    m_modeManager = new ModeManager(this, m_modeStack);
+
     registerDefaultContainers();
     registerDefaultActions();
 
     m_navigationWidget = new NavigationWidget(m_toggleSideBarAction);
     m_rightPaneWidget = new RightPaneWidget();
 
-    m_modeStack = new FancyTabWidget(this);
-    m_modeManager = new ModeManager(this, m_modeStack);
     m_statusBarManager = new StatusBarManager(this);
     m_messageManager = new MessageManager;
     m_editorManager = new EditorManager(this);
@@ -727,6 +728,12 @@ void MainWindow::registerDefaultActions()
     mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
     m_toggleSideBarAction->setEnabled(false);
 
+    // Show Mode Selector Action
+    m_toggleModeSelectorAction = new QAction(tr("Show Mode Selector"), this);
+    m_toggleModeSelectorAction->setCheckable(true);
+    cmd = ActionManager::registerAction(m_toggleModeSelectorAction, Constants::TOGGLE_MODE_SELECTOR, globalContext);
+    connect(m_toggleModeSelectorAction, SIGNAL(triggered(bool)), ModeManager::instance(), SLOT(setModeSelectorVisible(bool)));
+    mwindow->addAction(cmd, Constants::G_WINDOW_VIEWS);
 
 #if defined(Q_OS_MAC)
     const QString fullScreenActionText(tr("Enter Full Screen"));
@@ -1169,6 +1176,7 @@ static const char settingsGroup[] = "MainWindow";
 static const char colorKey[] = "Color";
 static const char windowGeometryKey[] = "WindowGeometry";
 static const char windowStateKey[] = "WindowState";
+static const char modeSelectorVisibleKey[] = "ModeSelectorVisible";
 
 void MainWindow::readSettings()
 {
@@ -1188,6 +1196,10 @@ void MainWindow::readSettings()
         resize(1008, 700); // size without window decoration
     restoreState(m_settings->value(QLatin1String(windowStateKey)).toByteArray());
 
+    bool modeSelectorVisible = m_settings->value(QLatin1String(modeSelectorVisibleKey), true).toBool();
+    ModeManager::instance()->setModeSelectorVisible(modeSelectorVisible);
+    m_toggleModeSelectorAction->setChecked(modeSelectorVisible);
+
     m_settings->endGroup();
 
     m_editorManager->readSettings();
@@ -1204,6 +1216,7 @@ void MainWindow::writeSettings()
 
     m_settings->setValue(QLatin1String(windowGeometryKey), saveGeometry());
     m_settings->setValue(QLatin1String(windowStateKey), saveState());
+    m_settings->setValue(QLatin1String(modeSelectorVisibleKey), ModeManager::isModeSelectorVisible());
 
     m_settings->endGroup();
 
diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h
index 0fc5c4172dd0976c33b01a5fca975493dbc2c22a..51b702ef9d2a63ff91b776ec0820395d0ab35324 100644
--- a/src/plugins/coreplugin/mainwindow.h
+++ b/src/plugins/coreplugin/mainwindow.h
@@ -216,6 +216,7 @@ private:
     QAction *m_exitAction;
     QAction *m_optionsAction;
     QAction *m_toggleSideBarAction;
+    QAction *m_toggleModeSelectorAction;
     QAction *m_toggleFullScreenAction;
     QAction *m_minimizeAction;
     QAction *m_zoomAction;
diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp
index 21407245332756677490af14506cc93bd2b77e2b..f1f019be140b3b56241116c4d73cc7758b88c4cf 100644
--- a/src/plugins/coreplugin/modemanager.cpp
+++ b/src/plugins/coreplugin/modemanager.cpp
@@ -337,9 +337,14 @@ void ModeManager::setFocusToCurrentMode()
     }
 }
 
-void ModeManager::setModeBarHidden(bool hidden)
+void ModeManager::setModeSelectorVisible(bool visible)
 {
-    d->m_modeStack->setSelectionWidgetHidden(hidden);
+    d->m_modeStack->setSelectionWidgetVisible(visible);
+}
+
+bool ModeManager::isModeSelectorVisible()
+{
+    return d->m_modeStack->isSelectionWidgetVisible();
 }
 
 ModeManager *ModeManager::instance()
diff --git a/src/plugins/coreplugin/modemanager.h b/src/plugins/coreplugin/modemanager.h
index 311b902e589511e9d84aa6dec0545a8eb8c68e3d..caf17cada03250c1d38024e73141d680c21c1967 100644
--- a/src/plugins/coreplugin/modemanager.h
+++ b/src/plugins/coreplugin/modemanager.h
@@ -66,9 +66,12 @@ public:
     static void addWidget(QWidget *widget);
 
     static void activateModeType(Id type);
-    static void setModeBarHidden(bool hidden);
     static void activateMode(Id id);
     static void setFocusToCurrentMode();
+    static bool isModeSelectorVisible();
+
+public slots:
+    void setModeSelectorVisible(bool visible);
 
 signals:
     void currentModeAboutToChange(Core::IMode *mode);