Index: language/duchain/duchainutils.cpp
===================================================================
--- language/duchain/duchainutils.cpp	(Revision 869842)
+++ language/duchain/duchainutils.cpp	(Arbeitskopie)
@@ -360,3 +360,17 @@
     }
   }
 }
+
+KDevelop::DUContext* DUChainUtils::getArgumentContext(KDevelop::Declaration* decl) {
+  DUContext* internal = decl->internalContext();
+  if( !internal )
+    return 0;
+  if( internal->type() == DUContext::Function )
+    return internal;
+  foreach( DUContext::Import ctx, internal->importedParentContexts() ) {
+    if( ctx.context() )
+      if( ctx.context()->type() == DUContext::Function )
+        return ctx.context();
+  }
+  return 0;
+}
Index: language/duchain/duchainutils.h
===================================================================
--- language/duchain/duchainutils.h	(Revision 869842)
+++ language/duchain/duchainutils.h	(Arbeitskopie)
@@ -69,8 +69,9 @@
   ///Re-implement DUChainItemFilter to do something with the items.
   KDEVPLATFORMLANGUAGE_EXPORT void collectItems( DUContext* context, DUChainItemFilter& filter );
 
-}
+  KDEVPLATFORMLANGUAGE_EXPORT DUContext* getArgumentContext(Declaration* decl);
 
 }
+}
 
 #endif // DUCHAINUTILS_H
Index: language/duchain/navigation/navigationaction.h
===================================================================
--- language/duchain/navigation/navigationaction.h	(Revision 0)
+++ language/duchain/navigation/navigationaction.h	(Revision 0)
@@ -0,0 +1,62 @@
+/*
+   Copyright 2007 David Nolden <david.nolden.kdevelop@art-master.de>
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License version 2 as published by the Free Software Foundation.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+*/
+
+#ifndef NAVIGATIONACTION_H
+#define NAVIGATIONACTION_H
+
+#include <kurl.h>
+#include <ktexteditor/cursor.h>
+
+#include "../duchainpointer.h"
+
+namespace KDevelop {
+
+class AbstractNavigationContext;
+
+struct NavigationAction {
+  enum Type {
+    None,
+    NavigateDeclaration,
+    JumpToSource //If this is set, the action jumps to document and cursor if they are valid, else to the declaration-position of decl
+  };
+
+  NavigationAction() : targetContext(0), type(None) {
+  }
+
+  NavigationAction( DeclarationPointer decl_, Type type_ ) : targetContext(0), decl(decl_), type(type_) {
+  }
+
+  NavigationAction( const KUrl& _document, const KTextEditor::Cursor& _cursor) : targetContext(0), document(_document), cursor(_cursor) {
+    type = JumpToSource;
+  }
+
+  NavigationAction(AbstractNavigationContext* _targetContext) : targetContext(_targetContext) {
+  }
+
+  AbstractNavigationContext* targetContext; //If this is set, this action does nothing else than jumping to that context
+
+  DeclarationPointer decl;
+  Type type;
+
+  KUrl document;
+  KTextEditor::Cursor cursor;
+};
+
+}
+
+#endif
Index: language/duchain/navigation/abstractnavigationwidget.cpp
===================================================================
--- language/duchain/navigation/abstractnavigationwidget.cpp	(Revision 0)
+++ language/duchain/navigation/abstractnavigationwidget.cpp	(Revision 0)
@@ -0,0 +1,112 @@
+/*
+   Copyright 2007 David Nolden <david.nolden.kdevelop@art-master.de>
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License version 2 as published by the Free Software Foundation.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+*/
+
+
+#include "abstractnavigationwidget.h"
+
+#include <QtCore/QMap>
+#include <QtCore/QStringList>
+#include <QtCore/QMetaObject>
+#include <QtGui/QScrollBar>
+
+#include <klocale.h>
+
+#include "../declaration.h"
+#include "../ducontext.h"
+#include "../duchainlock.h"
+#include "../functiondeclaration.h"
+#include "../functiondefinition.h"
+#include "../forwarddeclaration.h"
+#include "../namespacealiasdeclaration.h"
+#include "../classfunctiondeclaration.h"
+#include "../classmemberdeclaration.h"
+#include "../topducontext.h"
+#include "abstractnavigationcontext.h"
+#include "navigationaction.h"
+
+#include "../../../interfaces/icore.h"
+#include "../../../interfaces/idocumentcontroller.h"
+
+namespace KDevelop {
+
+AbstractNavigationWidget::AbstractNavigationWidget()
+{
+}
+
+void AbstractNavigationWidget::initBrowser(int height) {
+  setOpenLinks(false);
+  setOpenExternalLinks(false);
+  resize(height, 100);
+  setNotifyClick(true);
+
+  connect( this, SIGNAL(anchorClicked(const QUrl&)), this, SLOT(anchorClicked(const QUrl&)) );
+}
+
+AbstractNavigationWidget::~AbstractNavigationWidget() {
+}
+
+void AbstractNavigationWidget::setContext(NavigationContextPointer context)
+{
+  m_context = context;
+  update();
+}
+
+void AbstractNavigationWidget::update() {
+  Q_ASSERT( m_context );
+  int scrollPos = verticalScrollBar()->value();
+  setHtml( m_context->html() );
+  verticalScrollBar()->setValue(scrollPos);
+  scrollToAnchor("selectedItem");
+}
+
+void AbstractNavigationWidget::anchorClicked(const QUrl& url) {
+  DUChainReadLocker lock( DUChain::lock() );
+  setContext( m_context->acceptLink(url.toString()) );
+}
+
+void AbstractNavigationWidget::next() {
+  DUChainReadLocker lock( DUChain::lock() );
+  Q_ASSERT( m_context );
+  m_context->nextLink();
+  update();
+}
+
+void AbstractNavigationWidget::previous() {
+  DUChainReadLocker lock( DUChain::lock() );
+  Q_ASSERT( m_context );
+  m_context->previousLink();
+  update();
+}
+
+void AbstractNavigationWidget::accept() {
+  DUChainReadLocker lock( DUChain::lock() );
+  Q_ASSERT( m_context );
+  setContext( m_context->accept() );
+}
+
+void AbstractNavigationWidget::up() {
+  verticalScrollBar()->triggerAction( QAbstractSlider::SliderSingleStepSub );
+}
+
+void AbstractNavigationWidget::down() {
+  verticalScrollBar()->triggerAction( QAbstractSlider::SliderSingleStepAdd );
+}
+
+}
+
+#include "abstractnavigationwidget.moc"
Index: language/duchain/navigation/abstractnavigationcontext.cpp
===================================================================
--- language/duchain/navigation/abstractnavigationcontext.cpp	(Revision 0)
+++ language/duchain/navigation/abstractnavigationcontext.cpp	(Revision 0)
@@ -0,0 +1,193 @@
+/*
+   Copyright 2007 David Nolden <david.nolden.kdevelop@art-master.de>
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License version 2 as published by the Free Software Foundation.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+*/
+
+#include "abstractnavigationcontext.h"
+
+#include <QtGui/QTextDocument>
+#include <klocale.h>
+
+#include "../../../interfaces/icore.h"
+#include "../../../interfaces/idocumentcontroller.h"
+#include "../functiondeclaration.h"
+#include "../functiondefinition.h"
+#include "../namespacealiasdeclaration.h"
+#include "../classmemberdeclaration.h"
+#include "../classfunctiondeclaration.h"
+#include "../forwarddeclaration.h"
+#include "../duchainutils.h"
+#include "../types/functiontype.h"
+#include "../types/enumeratortype.h"
+#include "../types/enumerationtype.h"
+#include "../types/referencetype.h"
+#include "../types/pointertype.h"
+
+
+namespace KDevelop {
+
+AbstractNavigationContext::AbstractNavigationContext( DeclarationPointer decl, KDevelop::TopDUContextPointer topContext, AbstractNavigationContext* previousContext)
+  : m_declaration(decl), m_selectedLink(0), m_linkCount(-1),
+    m_previousContext(previousContext), m_topContext(topContext)
+{
+  //Jump from definition to declaration if possible
+  FunctionDefinition* definition = dynamic_cast<FunctionDefinition*>(m_declaration.data());
+  if(definition && definition->declaration())
+    m_declaration = DeclarationPointer(definition->declaration());
+}
+
+void AbstractNavigationContext::addExternalHtml( const QString& text )
+{
+  int lastPos = 0;
+  int pos = 0;
+  QString fileMark = "KDEV_FILE_LINK{";
+  while( pos < text.length() && (pos = text.indexOf( fileMark, pos)) != -1 ) {
+    m_currentText += text.mid(lastPos, pos-lastPos);
+
+    pos += fileMark.length();
+
+    if( pos != text.length() ) {
+      int fileEnd = text.indexOf('}', pos);
+      if( fileEnd != -1 ) {
+        QString file = text.mid( pos, fileEnd - pos );
+        pos = fileEnd + 1;
+        makeLink( KUrl(file).fileName(), file, NavigationAction( KUrl(file), KTextEditor::Cursor() ) );
+      }
+    }
+
+    lastPos = pos;
+  }
+
+  m_currentText += text.mid(lastPos, text.length()-lastPos);
+}
+
+void AbstractNavigationContext::makeLink( const QString& name, DeclarationPointer declaration, NavigationAction::Type actionType )
+{
+  NavigationAction action( declaration, actionType );
+  QString targetId = QString("%1").arg((quint64)declaration.data());
+  makeLink(name, targetId, action);
+}
+
+void AbstractNavigationContext::makeLink( const QString& name, QString targetId, const NavigationAction& action)
+{
+  m_links[ targetId ] = action;
+  m_intLinks[ m_linkCount ] = action;
+
+  QString str = Qt::escape(name);
+  if( m_linkCount == m_selectedLink ) ///@todo Change background-color here instead of foreground-color
+    str = "<font color=\"#880088\">" + str + "</font>";
+
+  m_currentText += "<a href=\"" + targetId + "\"" + (m_linkCount == m_selectedLink ? QString(" name = \"selectedItem\"") : QString()) + ">" + str + "</a>";
+
+  if( m_selectedLink == m_linkCount )
+    m_selectedLinkAction = action;
+
+  ++m_linkCount;
+}
+
+NavigationContextPointer AbstractNavigationContext::execute(NavigationAction& action)
+{
+  if(action.targetContext)
+    return NavigationContextPointer(action.targetContext);
+
+  if( !action.decl && (action.type != NavigationAction::JumpToSource || action.document.isEmpty()) ) {
+      kDebug(9007) << "Navigation-action has invalid declaration" << endl;
+      return NavigationContextPointer(this);
+  }
+  qRegisterMetaType<KUrl>("KUrl");
+  qRegisterMetaType<KTextEditor::Cursor>("KTextEditor::Cursor");
+
+  switch( action.type ) {
+    case NavigationAction::None:
+      kDebug(9007) << "Tried to execute an invalid action in navigation-widget" << endl;
+      break;
+    case NavigationAction::NavigateDeclaration:
+    {
+      if( m_previousContext && m_previousContext->m_declaration == action.decl )
+        return NavigationContextPointer( m_previousContext );
+      return registerChild(action.decl);
+    } break;
+  case NavigationAction::JumpToSource:
+      {
+        KUrl doc = action.document;
+        KTextEditor::Cursor cursor = action.cursor;
+        if(doc.isEmpty()) {
+          doc = KUrl(action.decl->url().str());
+/*          if(action.decl->internalContext())
+            cursor = action.decl->internalContext()->range().textRange().start() + KTextEditor::Cursor(0, 1);
+          else*/
+            cursor = action.decl->range().textRange().start();
+        }
+
+        //This is used to execute the slot delayed in the event-loop, so crashes are avoided
+        QMetaObject::invokeMethod( ICore::self()->documentController(), "openDocument", Qt::QueuedConnection, Q_ARG(KUrl, doc), Q_ARG(KTextEditor::Cursor, cursor) );
+        break;
+      }
+  }
+
+  return NavigationContextPointer( this );
+}
+
+NavigationContextPointer AbstractNavigationContext::registerChild( AbstractNavigationContext* context ) {
+  m_children << NavigationContextPointer(context);
+  return m_children.last();
+}
+
+QString AbstractNavigationContext::declarationKind(Declaration* decl)
+{
+  const AbstractFunctionDeclaration* function = dynamic_cast<const AbstractFunctionDeclaration*>(decl);
+
+  QString kind;
+
+  if( decl->isTypeAlias() )
+    kind = i18n("Typedef");
+  else if( decl->kind() == Declaration::Type ) {
+    //if( decl->type<CppClassType>() )
+    if( decl->type<StructureType>() )
+      kind = i18n("Class");
+    else
+      i18n("Class");
+  }
+
+  if( decl->kind() == Declaration::Instance )
+    kind = i18n("Variable");
+
+  if( NamespaceAliasDeclaration* alias = dynamic_cast<NamespaceAliasDeclaration*>(decl) ) {
+    if( alias->identifier().isEmpty() )
+      kind = i18n("Namespace import");
+    else
+      kind = i18n("Namespace alias");
+  }
+
+  if(function)
+    kind = i18n("Function");
+
+  if( decl->isForwardDeclaration() )
+    kind = i18n("Forward Declaration");
+
+  return kind;
+}
+
+const Colorizer AbstractNavigationContext::errorHighlight("990000");
+const Colorizer AbstractNavigationContext::labelHighlight("000035");
+const Colorizer AbstractNavigationContext::codeHighlight("005000");
+const Colorizer AbstractNavigationContext::propertyHighlight("009900");
+const Colorizer AbstractNavigationContext::navigationHighlight("000099");
+const Colorizer AbstractNavigationContext::importantHighlight("000000", true, true);
+const Colorizer AbstractNavigationContext::commentHighlight("000000", false, true);
+const Colorizer AbstractNavigationContext::nameHighlight("000000", true, false);
+
+}
Index: language/duchain/navigation/abstractnavigationwidget.h
===================================================================
--- language/duchain/navigation/abstractnavigationwidget.h	(Revision 0)
+++ language/duchain/navigation/abstractnavigationwidget.h	(Revision 0)
@@ -0,0 +1,78 @@
+/*
+   Copyright 2007 David Nolden <david.nolden.kdevelop@art-master.de>
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License version 2 as published by the Free Software Foundation.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+*/
+
+#ifndef ABSTRACTNAVIGATIONWIDGET_H
+#define ABSTRACTNAVIGATIONWIDGET_H
+
+
+#include <QtCore/QObject>
+#include <QtCore/QPointer>
+#include <KDE/KSharedPtr>
+#include <ktextbrowser.h>
+
+#include "../duchainpointer.h"
+#include "../../interfaces/quickopendataprovider.h"
+#include "../../languageexport.h"
+#include "abstractnavigationcontext.h"
+
+class QWidget;
+class QTextBrowser;
+
+namespace KDevelop {
+  /**
+   * This class deleted itself when its part is deleted, so always use a QPointer when referencing it.
+   * The duchain must be read-locked for most operations
+   * */
+  class KDEVPLATFORMLANGUAGE_EXPORT AbstractNavigationWidget : public KTextBrowser, public QuickOpenEmbeddedWidgetInterface
+  {
+    Q_OBJECT
+    public:
+      AbstractNavigationWidget();
+
+      virtual ~AbstractNavigationWidget();
+
+    public slots:
+      ///Keyboard-action "next"
+      virtual void next();
+      ///Keyboard-action "previous"
+      virtual void previous();
+      ///Keyboard-action "accept"
+      virtual void accept();
+      virtual void up();
+      virtual void down();
+
+    private slots:
+      void anchorClicked(const QUrl&);
+    protected:
+
+      void initBrowser(int height);
+      void update();
+
+      void setContext(NavigationContextPointer context);
+
+      NavigationContextPointer m_context, m_startContext;
+
+      TopDUContextPointer m_topContext;
+
+      QPointer<QTextBrowser> m_browser;
+
+  };
+}
+
+
+#endif
Index: language/duchain/navigation/abstractnavigationcontext.h
===================================================================
--- language/duchain/navigation/abstractnavigationcontext.h	(Revision 0)
+++ language/duchain/navigation/abstractnavigationcontext.h	(Revision 0)
@@ -0,0 +1,174 @@
+/*
+   Copyright 2007 David Nolden <david.nolden.kdevelop@art-master.de>
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License version 2 as published by the Free Software Foundation.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+*/
+
+#ifndef ABSTRACTNAVIGATIONCONTEXT_H
+#define ABSTRACTNAVIGATIONCONTEXT_H
+
+#include <KDE/KSharedPtr>
+
+#include "../../languageexport.h"
+#include "../duchainpointer.h"
+#include "navigationaction.h"
+#include "../types/structuretype.h"
+
+
+
+namespace KDevelop {
+
+class FunctionDefinition;
+class NamespaceAliasDeclaration;
+/** A helper-class for elegant colorization of html-strings .
+ *
+ * Initialize it with a html-color like "990000". and colorize strings
+ * using operator()
+ */
+struct KDEVPLATFORMLANGUAGE_EXPORT Colorizer
+{
+  Colorizer(const QString& color, bool bold=false, bool italic=false) : m_color(color), m_bold(bold), m_italic(italic) {
+  }
+
+  QString operator()(const QString& str) const
+  {
+    QString ret = "<font color=\"#" + m_color + "\">" + str + "</font>";
+    if( m_bold )
+      ret = "<b>"+ret+"</b>";
+
+    if( m_italic )
+      ret = "<i>"+ret+"</i>";
+    return ret;
+  }
+
+  QString m_color;
+  bool m_bold, m_italic;
+};
+
+class AbstractNavigationContext;
+typedef KSharedPtr<AbstractNavigationContext> NavigationContextPointer;
+
+class KDEVPLATFORMLANGUAGE_EXPORT AbstractNavigationContext : public KShared
+{
+  public:
+    AbstractNavigationContext( DeclarationPointer decl, KDevelop::TopDUContextPointer topContext, AbstractNavigationContext* previousContext = 0 );
+
+    virtual ~AbstractNavigationContext() {
+    }
+
+    void nextLink()
+    {
+      //Make sure link-count is valid
+      if( m_linkCount == -1 )
+        html();
+
+      if( m_linkCount > 0 )
+        m_selectedLink = (m_selectedLink+1) % m_linkCount;
+    }
+
+    void previousLink()
+    {
+      //Make sure link-count is valid
+      if( m_linkCount == -1 )
+        html();
+
+      if( m_linkCount > 0 ) {
+        --m_selectedLink;
+        if( m_selectedLink <  0 )
+          m_selectedLink += m_linkCount;
+      }
+
+      Q_ASSERT(m_selectedLink >= 0);
+    }
+
+    void setPrefixSuffix( const QString& prefix, const QString& suffix ) {
+      m_prefix = prefix;
+      m_suffix = suffix;
+    }
+
+    NavigationContextPointer accept() {
+      if( m_selectedLink >= 0 &&  m_selectedLink < m_linkCount )
+      {
+        NavigationAction action = m_intLinks[m_selectedLink];
+        return execute(action);
+      }
+      return NavigationContextPointer(this);
+    }
+
+    NavigationContextPointer acceptLink(const QString& link) {
+      if( !m_links.contains(link) ) {
+        kDebug(9007) << "Executed unregistered link " << link << endl;
+        return NavigationContextPointer(this);
+      }
+
+      return execute(m_links[link]);
+    }
+
+
+    NavigationAction currentAction() const {
+      return m_selectedLinkAction;
+    }
+
+    static QString declarationKind(Declaration* decl);
+
+    virtual QString name() const = 0;
+
+    virtual QString html(bool shorten = false) = 0;
+
+  protected:
+
+    DeclarationPointer m_declaration;
+
+    NavigationContextPointer execute(NavigationAction& action);
+
+    void addExternalHtml( const QString& text );
+
+    ///Creates and registers a link to the given declaration, labeled by the given name
+    void makeLink( const QString& name, DeclarationPointer declaration, NavigationAction::Type actionType );
+
+    ///Creates a link that executes the given action
+    void makeLink( const QString& name, QString targetId, const NavigationAction& action);
+
+    int m_selectedLink; //The link currently selected
+    NavigationAction m_selectedLinkAction; //Target of the currently selected link
+
+    virtual NavigationContextPointer registerChild(DeclarationPointer /*declaration*/) { return NavigationContextPointer(); };
+    NavigationContextPointer registerChild( AbstractNavigationContext* context );
+    QList<NavigationContextPointer> m_children; //Useed to keep alive all children until this is deleted
+
+    //A counter used while building the html-code to count the used links.
+    int m_linkCount;
+    QString m_currentText; //Here the text is built
+    QMap<QString, NavigationAction> m_links;
+    QMap<int, NavigationAction> m_intLinks;
+    AbstractNavigationContext* m_previousContext;
+    QString m_prefix, m_suffix;
+    KDevelop::TopDUContextPointer m_topContext;
+
+
+    static const Colorizer errorHighlight;
+    static const Colorizer labelHighlight;
+    static const Colorizer codeHighlight;
+    static const Colorizer propertyHighlight;
+    static const Colorizer navigationHighlight;
+    static const Colorizer importantHighlight;
+    static const Colorizer commentHighlight;
+    static const Colorizer nameHighlight;
+
+};
+
+}
+
+#endif
Index: language/CMakeLists.txt
===================================================================
--- language/CMakeLists.txt	(Revision 869842)
+++ language/CMakeLists.txt	(Arbeitskopie)
@@ -69,6 +69,9 @@
     duchain/repositories/itemrepository.cpp
     duchain/repositories/typerepository.cpp
 
+    duchain/navigation/abstractnavigationwidget.cpp
+    duchain/navigation/abstractnavigationcontext.cpp
+
     interfaces/ilanguagesupport.cpp
     interfaces/quickopendataprovider.cpp
     interfaces/iproblem.cpp
@@ -83,6 +86,7 @@
 
     codegen/createclass.cpp
     codegen/codegenerator.cpp
+
 )
 
 set( kdevplatformlanguage_LIB_UI
@@ -233,3 +237,10 @@
     codegen/codegenerator.h
     DESTINATION ${INCLUDE_INSTALL_DIR}/kdevplatform/language/codegen
 )
+
+install(FILES
+    duchain/navigation/abstractnavigationcontext.h
+    duchain/navigation/abstractnavigationwidget.h
+    duchain/navigation/navigationaction.h
+    DESTINATION ${INCLUDE_INSTALL_DIR}/kdevplatform/language/duchain/navigation
+)
\ No newline at end of file
