diff --git a/src/plugins/cppeditor/cpptypehierarchy.cpp b/src/plugins/cppeditor/cpptypehierarchy.cpp
index 2883a6f8f20c4571567a339d4b43e96d3be6b96c..2fd3c6185b977d589cb4f724bf088b2e3d94059d 100644
--- a/src/plugins/cppeditor/cpptypehierarchy.cpp
+++ b/src/plugins/cppeditor/cpptypehierarchy.cpp
@@ -99,6 +99,12 @@ public:
         m_link = cppClass->link;
     }
 
+    void clear()
+    {
+        QLabel::clear();
+        m_link = CPPEditorWidget::Link();
+    }
+
 private:
     void mousePressEvent(QMouseEvent *)
     {
@@ -114,45 +120,42 @@ private:
     CPPEditorWidget::Link m_link;
 };
 
-} // namespace Internal
-} // namespace CppEditor
-
 // CppTypeHierarchyWidget
-CppTypeHierarchyWidget::CppTypeHierarchyWidget(Core::IEditor *editor) :
+CppTypeHierarchyWidget::CppTypeHierarchyWidget() :
     QWidget(0),
     m_treeView(0),
     m_model(0),
-    m_delegate(0)
+    m_delegate(0),
+    m_noTypeHierarchyAvailableLabel(0)
 {
+    m_inspectedClass = new CppClassLabel(this);
+    m_inspectedClass->setMargin(5);
+    m_model = new QStandardItemModel(this);
+    m_treeView = new NavigationTreeView(this);
+    m_delegate = new AnnotatedItemDelegate(this);
+    m_delegate->setDelimiter(QLatin1String(" "));
+    m_delegate->setAnnotationRole(AnnotationRole);
+    m_treeView->setModel(m_model);
+    m_treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
+    m_treeView->setItemDelegate(m_delegate);
+    m_treeView->setRootIsDecorated(false);
+    connect(m_treeView, SIGNAL(clicked(QModelIndex)), this, SLOT(onItemClicked(QModelIndex)));
+
+    m_noTypeHierarchyAvailableLabel = new QLabel(tr("No type hierarchy available"), this);
+    m_noTypeHierarchyAvailableLabel->setAlignment(Qt::AlignCenter);
+    m_noTypeHierarchyAvailableLabel->setAutoFillBackground(true);
+    m_noTypeHierarchyAvailableLabel->setBackgroundRole(QPalette::Base);
+
     QVBoxLayout *layout = new QVBoxLayout;
     layout->setMargin(0);
     layout->setSpacing(0);
+    layout->addWidget(m_inspectedClass);
+    layout->addWidget(m_treeView);
+    layout->addWidget(m_noTypeHierarchyAvailableLabel);
 
-    if (qobject_cast<CPPEditor *>(editor)) {
-        m_inspectedClass = new CppClassLabel(this);
-        m_inspectedClass->setMargin(5);
-        layout->addWidget(m_inspectedClass);
-        m_model = new QStandardItemModel(this);
-        m_treeView = new NavigationTreeView(this);
-        m_delegate = new AnnotatedItemDelegate(this);
-        m_delegate->setDelimiter(QLatin1String(" "));
-        m_delegate->setAnnotationRole(AnnotationRole);
-        m_treeView->setModel(m_model);
-        m_treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
-        m_treeView->setItemDelegate(m_delegate);
-        m_treeView->setRootIsDecorated(false);
-        layout->addWidget(m_treeView);
-
-        connect(m_treeView, SIGNAL(clicked(QModelIndex)), this, SLOT(onItemClicked(QModelIndex)));
-        connect(CppEditorPlugin::instance(), SIGNAL(typeHierarchyRequested()), this, SLOT(perform()));
-    } else {
-        QLabel *label = new QLabel(tr("No type hierarchy available"), this);
-        label->setAlignment(Qt::AlignCenter);
-        label->setAutoFillBackground(true);
-        label->setBackgroundRole(QPalette::Base);
-        layout->addWidget(label);
-    }
     setLayout(layout);
+
+    connect(CppEditorPlugin::instance(), SIGNAL(typeHierarchyRequested()), SLOT(perform()));
 }
 
 CppTypeHierarchyWidget::~CppTypeHierarchyWidget()
@@ -160,14 +163,17 @@ CppTypeHierarchyWidget::~CppTypeHierarchyWidget()
 
 void CppTypeHierarchyWidget::perform()
 {
+    showNoTypeHierarchyLabel();
+
     CPPEditor *editor = qobject_cast<CPPEditor *>(Core::EditorManager::instance()->currentEditor());
     if (!editor)
         return;
+
     CPPEditorWidget *widget = qobject_cast<CPPEditorWidget *>(editor->widget());
     if (!widget)
         return;
 
-    m_model->clear();
+    clearTypeHierarchy();
 
     CppElementEvaluator evaluator(widget);
     evaluator.setLookupBaseClasses(true);
@@ -185,11 +191,14 @@ void CppTypeHierarchyWidget::perform()
             m_model->invisibleRootItem()->appendRow(derived);
             buildHierarchy(*cppClass, derived, true, &CppClass::derived);
             m_treeView->expandAll();
+
+            showTypeHierarchy();
         }
     }
 }
 
-void CppTypeHierarchyWidget::buildHierarchy(const CppClass &cppClass, QStandardItem *parent, bool isRoot, const HierarchyMember member)
+void CppTypeHierarchyWidget::buildHierarchy(const CppClass &cppClass, QStandardItem *parent,
+                                            bool isRoot, const HierarchyMember member)
 {
     if (!isRoot) {
         QStandardItem *item = itemForClass(cppClass);
@@ -200,6 +209,26 @@ void CppTypeHierarchyWidget::buildHierarchy(const CppClass &cppClass, QStandardI
         buildHierarchy(klass, parent, false, member);
 }
 
+void CppTypeHierarchyWidget::showNoTypeHierarchyLabel()
+{
+    m_inspectedClass->hide();
+    m_treeView->hide();
+    m_noTypeHierarchyAvailableLabel->show();
+}
+
+void CppTypeHierarchyWidget::showTypeHierarchy()
+{
+    m_inspectedClass->show();
+    m_treeView->show();
+    m_noTypeHierarchyAvailableLabel->hide();
+}
+
+void CppTypeHierarchyWidget::clearTypeHierarchy()
+{
+    m_inspectedClass->clear();
+    m_model->clear();
+}
+
 void CppTypeHierarchyWidget::onItemClicked(const QModelIndex &index)
 {
     const TextEditor::BaseTextEditorWidget::Link link
@@ -214,7 +243,7 @@ void CppTypeHierarchyWidget::onItemClicked(const QModelIndex &index)
 // CppTypeHierarchyStackedWidget
 CppTypeHierarchyStackedWidget::CppTypeHierarchyStackedWidget(QWidget *parent) :
     QStackedWidget(parent),
-    m_typeHiearchyWidgetInstance(new CppTypeHierarchyWidget(Core::EditorManager::currentEditor()))
+    m_typeHiearchyWidgetInstance(new CppTypeHierarchyWidget)
 {
     addWidget(m_typeHiearchyWidgetInstance);
 }
@@ -259,3 +288,7 @@ Core::NavigationView CppTypeHierarchyFactory::createWidget()
     navigationView.widget = w;
     return navigationView;
 }
+
+} // namespace Internal
+} // namespace CppEditor
+
diff --git a/src/plugins/cppeditor/cpptypehierarchy.h b/src/plugins/cppeditor/cpptypehierarchy.h
index eb8f426925ca9dd583662acb7e5aced5bfc22a6e..5b06035845d95fefc894eee673ea3c93403acd90 100644
--- a/src/plugins/cppeditor/cpptypehierarchy.h
+++ b/src/plugins/cppeditor/cpptypehierarchy.h
@@ -65,7 +65,7 @@ class CppTypeHierarchyWidget : public QWidget
 {
     Q_OBJECT
 public:
-    CppTypeHierarchyWidget(Core::IEditor *editor);
+    CppTypeHierarchyWidget();
     virtual ~CppTypeHierarchyWidget();
 
 public slots:
@@ -76,13 +76,18 @@ private slots:
 
 private:
     typedef QList<CppClass> CppClass::*HierarchyMember;
-    void buildHierarchy(const CppClass &cppClass, QStandardItem *parent, bool isRoot, HierarchyMember member);
+    void buildHierarchy(const CppClass &cppClass, QStandardItem *parent,
+                        bool isRoot, HierarchyMember member);
+    void showNoTypeHierarchyLabel();
+    void showTypeHierarchy();
+    void clearTypeHierarchy();
 
     CPPEditorWidget *m_cppEditor;
     Utils::NavigationTreeView *m_treeView;
     QStandardItemModel *m_model;
     Utils::AnnotatedItemDelegate *m_delegate;
     CppClassLabel *m_inspectedClass;
+    QLabel *m_noTypeHierarchyAvailableLabel;
 };
 
 // @todo: Pretty much the same design as the OutlineWidgetStack. Maybe we can generalize the