diff --git a/shared/help/help.pri b/shared/help/help.pri
index 9503d085938b6ae619b5d2567fa3fe8a163ec88a..dff0ae7699b673175d3571ba8d4ffa952340805e 100644
--- a/shared/help/help.pri
+++ b/shared/help/help.pri
@@ -9,7 +9,8 @@ HEADERS += \
         $$PWD/helpviewer.h \
         $$PWD/contentwindow.h \
         $$PWD/bookmarkmanager.h \
-        $$PWD/../namespace_global.h
+        $$PWD/../namespace_global.h \
+        $$PWD/indexwindow.h
 
 SOURCES += \
         $$PWD/filternamedialog.cpp \
@@ -19,7 +20,7 @@ SOURCES += \
         $$PWD/contentwindow.cpp \
         $$PWD/bookmarkmanager.cpp
 
-FORMS 	+= \
+FORMS   += \
         $$PWD/filternamedialog.ui \
         $$PWD/topicchooser.ui \
         $$PWD/bookmarkdialog.ui
diff --git a/src/plugins/cpptools/cpphoverhandler.cpp b/src/plugins/cpptools/cpphoverhandler.cpp
index 37b63bda9c23f4adf11670e34062efaded814a18..16ed8a9215039009e6d47403939d02d996824f83 100644
--- a/src/plugins/cpptools/cpphoverhandler.cpp
+++ b/src/plugins/cpptools/cpphoverhandler.cpp
@@ -60,7 +60,7 @@
 using namespace CppTools::Internal;
 
 CppHoverHandler::CppHoverHandler(CppModelManager *manager, QObject *parent)
-    : QObject(parent), m_manager(manager)
+    : QObject(parent), m_manager(manager), m_helpEngineNeedsSetup(false)
 {
     QFileInfo fi(ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>()->settings()->fileName());
     m_helpEngine = new QHelpEngineCore(fi.absolutePath()
@@ -68,6 +68,7 @@ CppHoverHandler::CppHoverHandler(CppModelManager *manager, QObject *parent)
     //m_helpEngine->setAutoSaveFilter(false);
     m_helpEngine->setupData();
     m_helpEngine->setCurrentFilter(tr("Unfiltered"));
+    m_helpEngineNeedsSetup = m_helpEngine->registeredDocumentations().count() == 0;
 }
 
 void CppHoverHandler::updateContextHelpId(TextEditor::ITextEditor *editor, int pos)
@@ -234,6 +235,12 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
         }
     }
 
+    if (m_helpEngineNeedsSetup
+        && m_helpEngine->registeredDocumentations().count() > 0) {
+        m_helpEngine->setupData();
+        m_helpEngineNeedsSetup = false;
+    }
+
     if (!m_helpId.isEmpty() && !m_helpEngine->linksForIdentifier(m_helpId).isEmpty()) {
         m_toolTip = QString(QLatin1String("<table><tr><td valign=middle><nobr>%1</td>"
                                           "<td><img src=\":/cpptools/images/f1.svg\"></td></tr></table>")).arg(Qt::escape(m_toolTip));
diff --git a/src/plugins/cpptools/cpphoverhandler.h b/src/plugins/cpptools/cpphoverhandler.h
index 9aaa17cb0f88e1e47c04ebca1a96114f53f6917b..d1de5277b1241468b5dfdfbeff5d9ec14ea49927 100644
--- a/src/plugins/cpptools/cpphoverhandler.h
+++ b/src/plugins/cpptools/cpphoverhandler.h
@@ -68,6 +68,7 @@ private:
     QHelpEngineCore *m_helpEngine;
     QString m_helpId;
     QString m_toolTip;
+    bool m_helpEngineNeedsSetup;
 };
 
 } // namespace Internal
diff --git a/src/plugins/help/help.pro b/src/plugins/help/help.pro
index 1148606cab73e847a7b8bb75ce359cae31a93c21..b2e9a1dbd613cec02e2b73ed04d1cd6c7e1eaa3d 100644
--- a/src/plugins/help/help.pro
+++ b/src/plugins/help/help.pro
@@ -16,8 +16,8 @@ HEADERS += helpplugin.h \
     searchwidget.h \
     helpfindsupport.h \
     help_global.h \
-    helpindexfilter.h \
-    indexwindow.h
+    helpindexfilter.h
+
 SOURCES += helpplugin.cpp \
     docsettingspage.cpp \
     filtersettingspage.cpp \
@@ -26,6 +26,7 @@ SOURCES += helpplugin.cpp \
     searchwidget.cpp \
     helpfindsupport.cpp \
     helpindexfilter.cpp
+
 FORMS += docsettingspage.ui \
     filtersettingspage.ui
 RESOURCES += help.qrc
diff --git a/src/plugins/help/indexwindow.h b/src/plugins/help/indexwindow.h
deleted file mode 100644
index 51ebb06653d197fa2fd1b74f5bcdf1bcc44031c8..0000000000000000000000000000000000000000
--- a/src/plugins/help/indexwindow.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/***************************************************************************
-**
-** This file is part of Qt Creator
-**
-** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-**
-** Contact:  Qt Software Information (qt-info@nokia.com)
-**
-**
-** Non-Open Source Usage
-**
-** Licensees may use this file in accordance with the Qt Beta Version
-** License Agreement, Agreement version 2.2 provided with the Software or,
-** alternatively, in accordance with the terms contained in a written
-** agreement between you and Nokia.
-**
-** GNU General Public License Usage
-**
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License versions 2.0 or 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the packaging
-** of this file.  Please review the following information to ensure GNU
-** General Public Licensing requirements will be met:
-**
-** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt GPL Exception
-** version 1.2, included in the file GPL_EXCEPTION.txt in this package.
-**
-***************************************************************************/
-
-#ifndef INDEXWINDOW_H
-#define INDEXWINDOW_H
-
-#include <QtCore/QUrl>
-#include <QtGui/QWidget>
-#include <QtGui/QLineEdit>
-
-QT_BEGIN_NAMESPACE
-
-class QHelpIndexWidget;
-class QHelpEngine;
-
-class IndexWindow : public QWidget
-{
-    Q_OBJECT
-
-public:
-    IndexWindow(QHelpEngine *helpEngine, QWidget *parent = 0);
-    ~IndexWindow();
-
-    void setSearchLineEditText(const QString &text);
-    QString searchLineEditText() const
-    {
-        return m_searchLineEdit->text();
-    }
-
-signals:
-    void linkActivated(const QUrl &link);
-    void linksActivated(const QMap<QString, QUrl> &links,
-        const QString &keyword);
-    void escapePressed();
-
-private slots:
-    void filterIndices(const QString &filter);
-    void enableSearchLineEdit();
-    void disableSearchLineEdit();
-
-private:
-    bool eventFilter(QObject *obj, QEvent *e);
-    void focusInEvent(QFocusEvent *e);
-
-    QLineEdit *m_searchLineEdit;
-    QHelpIndexWidget *m_indexWidget;
-    QHelpEngine *m_helpEngine;
-};
-
-QT_END_NAMESPACE
-
-#endif // INDEXWINDOW_H