From e83788f17bd5d2b416b819b41415f4de31992c9d Mon Sep 17 00:00:00 2001
From: mae <qt-info@nokia.com>
Date: Thu, 26 Mar 2009 15:54:05 +0100
Subject: [PATCH] Show the "Open Documents" navigation bar widget in the
 default configuration. Contains some compatible versioning code to also show
 it to current users, but without destroying their manual setup.

---
 src/plugins/coreplugin/navigationwidget.cpp | 38 +++++++++++++++------
 1 file changed, 28 insertions(+), 10 deletions(-)

diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp
index 2e360155908..f1940975467 100644
--- a/src/plugins/coreplugin/navigationwidget.cpp
+++ b/src/plugins/coreplugin/navigationwidget.cpp
@@ -238,16 +238,27 @@ void NavigationWidget::saveSettings(QSettings *settings)
 
 void NavigationWidget::restoreSettings(QSettings *settings)
 {
-    if (settings->contains("Navigation/Views")) {
-        QStringList views = settings->value("Navigation/Views").toStringList();
-        for (int i=0; i<views.count()-1; ++i) {
-            insertSubItem(0);
-        }
-        for (int i=0; i<views.count(); ++i) {
-            const QString &view = views.at(i);
-            NavigationSubWidget *nsw = m_subWidgets.at(i);
-            nsw->setFactory(view);
+    int version = settings->value("Navigation/Version", 1).toInt();
+    QStringList views = settings->value("Navigation/Views").toStringList();
+
+    bool restoreSplitterState = true;
+    if (version == 1) {
+        if (views.isEmpty())
+            views += "Projects";
+        if (!views.contains("Open Documents")) {
+            views += "Open Documents";
+            restoreSplitterState = false;
         }
+        settings->setValue("Navigation/Version", 2);
+    }
+
+    for (int i=0; i<views.count()-1; ++i) {
+        insertSubItem(0);
+    }
+    for (int i=0; i<views.count(); ++i) {
+        const QString &view = views.at(i);
+        NavigationSubWidget *nsw = m_subWidgets.at(i);
+        nsw->setFactory(view);
     }
 
     if (settings->contains("Navigation/Visible")) {
@@ -256,8 +267,15 @@ void NavigationWidget::restoreSettings(QSettings *settings)
         setShown(true);
     }
 
-    if (settings->contains("Navigation/VerticalPosition"))
+    if (restoreSplitterState && settings->contains("Navigation/VerticalPosition")) {
         restoreState(settings->value("Navigation/VerticalPosition").toByteArray());
+    } else {
+        QList<int> sizes;
+        sizes += 256;
+        for (int i = views.size()-1; i; --i)
+            sizes.prepend(512);
+        setSizes(sizes);
+    }
 
     if (settings->contains("Navigation/Width")) {
         m_width = settings->value("Navigation/Width").toInt();
-- 
GitLab