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