diff --git a/src/plugins/coreplugin/sidebar.cpp b/src/plugins/coreplugin/sidebar.cpp
index 4bec8a9dc87677fdd0fb8b310f7ceeadc4cc9950..1f30a508452102e41a3825bf67fe880f996f6cd0 100644
--- a/src/plugins/coreplugin/sidebar.cpp
+++ b/src/plugins/coreplugin/sidebar.cpp
@@ -218,11 +218,19 @@ void SideBar::saveSettings(QSettings *settings, const QString &name)
     const QString prefix = name.isEmpty() ? name : (name + QLatin1Char('/'));
 
     QStringList views;
-    for (int i = 0; i < m_widgets.count(); ++i)
-        views.append(m_widgets.at(i)->currentItemId());
+    for (int i = 0; i < m_widgets.count(); ++i) {
+        QString currentItemId = m_widgets.at(i)->currentItemId();
+        if (!currentItemId.isEmpty())
+            views.append(currentItemId);
+    }
+    if (views.isEmpty() && m_itemMap.size()) {
+        QMapIterator<QString, QWeakPointer<SideBarItem> > iter(m_itemMap);
+        iter.next();
+        views.append(iter.key());
+    }
 
     settings->setValue(prefix + "Views", views);
-    settings->setValue(prefix + "Visible", true);//isVisible());
+    settings->setValue(prefix + "Visible", true);
     settings->setValue(prefix + "VerticalPosition", saveState());
     settings->setValue(prefix + "Width", width());
 }
@@ -244,6 +252,7 @@ void SideBar::readSettings(QSettings *settings, const QString &name)
         if (views.count()) {
             foreach (const QString &id, views)
                 insertSideBarWidget(m_widgets.count(), id);
+
         } else {
             insertSideBarWidget(0);
         }
@@ -365,7 +374,9 @@ QString SideBarWidget::currentItemTitle() const
 
 QString SideBarWidget::currentItemId() const
 {
-    return m_currentItem->id();
+    if (m_currentItem)
+        return m_currentItem->id();
+    return QString();
 }
 
 void SideBarWidget::setCurrentItem(const QString &id)