From 672d63faab5454f8a553f6e25bcd1e2ad6225dff Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Thu, 21 Oct 2010 17:49:19 +0200
Subject: [PATCH] Navigation: Handle no widgets available case

Completely hide the sidebar if no navigation widgets are
available at all.
---
 src/plugins/coreplugin/navigationwidget.cpp | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp
index 7b45ec137a3..c551c98ea3d 100644
--- a/src/plugins/coreplugin/navigationwidget.cpp
+++ b/src/plugins/coreplugin/navigationwidget.cpp
@@ -218,6 +218,10 @@ QAbstractItemModel *NavigationWidget::factoryModel() const
 
 void NavigationWidget::updateToggleText()
 {
+    bool haveData = d->m_factoryModel->rowCount();
+    d->m_toggleSideBarAction->setVisible(haveData);
+    d->m_toggleSideBarAction->setEnabled(haveData);
+
     if (isShown())
         d->m_toggleSideBarAction->setToolTip(tr("Hide Sidebar"));
     else
@@ -312,6 +316,12 @@ void NavigationWidget::saveSettings(QSettings *settings)
 
 void NavigationWidget::restoreSettings(QSettings *settings)
 {
+    if (!d->m_factoryModel->rowCount()) {
+        // We have no widgets to show!
+        setShown(false);
+        return;
+    }
+
     int version = settings->value(QLatin1String("Navigation/Version"), 1).toInt();
     QStringList viewIds = settings->value(QLatin1String("Navigation/Views"),
                                           QStringList("Projects")).toStringList();
@@ -375,10 +385,11 @@ void NavigationWidget::setShown(bool b)
 {
     if (d->m_shown == b)
         return;
+    bool haveData = d->m_factoryModel->rowCount();
     d->m_shown = b;
     if (NavigationWidgetPlaceHolder::m_current) {
-        NavigationWidgetPlaceHolder::m_current->setVisible(d->m_shown && !d->m_suppressed);
-        d->m_toggleSideBarAction->setChecked(d->m_shown);
+        NavigationWidgetPlaceHolder::m_current->setVisible(d->m_shown && !d->m_suppressed && haveData);
+        d->m_toggleSideBarAction->setChecked(d->m_shown && !d->m_suppressed && haveData);
     } else {
         d->m_toggleSideBarAction->setChecked(false);
     }
@@ -420,4 +431,3 @@ QHash<QString, Core::Command*> NavigationWidget::commandMap() const
 }
 
 } // namespace Core
-
-- 
GitLab