diff --git a/src/plugins/cppeditor/cppoutline.cpp b/src/plugins/cppeditor/cppoutline.cpp
index 60e217666e653952670ca48dd74f8132e2e9ee64..5bab2160bee8c5a3d69cfd164c83dea09715e425 100644
--- a/src/plugins/cppeditor/cppoutline.cpp
+++ b/src/plugins/cppeditor/cppoutline.cpp
@@ -4,6 +4,7 @@
 #include <Symbol.h>
 
 #include <coreplugin/ifile.h>
+#include <coreplugin/editormanager/editormanager.h>
 #include <cplusplus/OverviewModel.h>
 
 #include <QtCore/QDebug>
@@ -126,6 +127,10 @@ void CppOutlineWidget::updateSelectionInText(const QItemSelection &selection)
             if (debug)
                 qDebug() << "CppOutline - moving cursor to" << line << column - 1;
 
+            Core::EditorManager *editorManager = Core::EditorManager::instance();
+            editorManager->cutForwardNavigationHistory();
+            editorManager->addCurrentPositionToNavigationHistory();
+
             // line has to be 1 based, column 0 based!
             m_editor->gotoLine(line, column - 1);
             m_blockCursorSync = false;
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index 7528acd51b2a84d434aacc5bb2cb9edde19e64db..690464cb6003eebddee271703b7ed6100de0ffac 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -50,6 +50,7 @@
 #include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/actionmanager/actioncontainer.h>
 #include <coreplugin/actionmanager/command.h>
+#include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/icore.h>
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/modemanager.h>
@@ -830,6 +831,10 @@ void QmlJSTextEditor::jumpToOutlineElement(int /*index*/)
     QModelIndex index = m_outlineCombo->view()->currentIndex();
     AST::SourceLocation location = index.data(QmlOutlineModel::SourceLocationRole).value<AST::SourceLocation>();
 
+    Core::EditorManager *editorManager = Core::EditorManager::instance();
+    editorManager->cutForwardNavigationHistory();
+    editorManager->addCurrentPositionToNavigationHistory();
+
     QTextCursor cursor = textCursor();
     cursor.setPosition(location.offset);
     setTextCursor(cursor);
diff --git a/src/plugins/qmljseditor/qmljsoutline.cpp b/src/plugins/qmljseditor/qmljsoutline.cpp
index 8c8d83357d34928de59741b4cd39ae201b9a98a6..ee3b5bb4fdf6ce672c87a4187e378c48fea90423 100644
--- a/src/plugins/qmljseditor/qmljsoutline.cpp
+++ b/src/plugins/qmljseditor/qmljsoutline.cpp
@@ -2,6 +2,7 @@
 #include "qmloutlinemodel.h"
 
 #include <coreplugin/ifile.h>
+#include <coreplugin/editormanager/editormanager.h>
 #include <QtGui/QVBoxLayout>
 
 #include <QDebug>
@@ -90,6 +91,10 @@ void QmlJSOutlineWidget::updateSelectionInText(const QItemSelection &selection)
         QModelIndex index = selection.indexes().first();
         AST::SourceLocation location = index.data(QmlOutlineModel::SourceLocationRole).value<AST::SourceLocation>();
 
+        Core::EditorManager *editorManager = Core::EditorManager::instance();
+        editorManager->cutForwardNavigationHistory();
+        editorManager->addCurrentPositionToNavigationHistory();
+
         QTextCursor textCursor = m_editor.data()->textCursor();
         m_blockCursorSync = true;
         textCursor.setPosition(location.offset);