From 5aea93028f7c1bd669ea1e9f900242048c04c693 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Wed, 14 Jul 2010 12:21:23 +0200
Subject: [PATCH] Add position to navigation history when navigating through
 outline

---
 src/plugins/cppeditor/cppoutline.cpp     | 5 +++++
 src/plugins/qmljseditor/qmljseditor.cpp  | 5 +++++
 src/plugins/qmljseditor/qmljsoutline.cpp | 5 +++++
 3 files changed, 15 insertions(+)

diff --git a/src/plugins/cppeditor/cppoutline.cpp b/src/plugins/cppeditor/cppoutline.cpp
index 60e217666e6..5bab2160bee 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 7528acd51b2..690464cb600 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 8c8d83357d3..ee3b5bb4fdf 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);
-- 
GitLab