diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 7de8ddc7281..a9eb40b6868 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -1066,7 +1066,6 @@ template IEditor *EditorManager::createEditor(const QString &editorId, const QString &fileName) { - typedef QList FactoryList; if (debugEditorManager) qDebug() << Q_FUNC_INFO << editorId << fileName; @@ -1595,6 +1594,12 @@ void EditorManager::addCurrentPositionToNavigationHistory(IEditor *editor, const updateActions(); } +void EditorManager::cutForwardNavigationHistory() +{ + currentEditorView()->cutForwardNavigationHistory(); + updateActions(); +} + void EditorManager::goBackInNavigationHistory() { currentEditorView()->goBackInNavigationHistory(); diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index c14860618ea..e488f040ea0 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -145,6 +145,7 @@ public: QList editorsForFiles(QList files) const; //QList editorGroups() const; void addCurrentPositionToNavigationHistory(IEditor *editor = 0, const QByteArray &saveState = QByteArray()); + void cutForwardNavigationHistory(); bool saveEditor(IEditor *editor); diff --git a/src/plugins/coreplugin/editormanager/editorview.cpp b/src/plugins/coreplugin/editormanager/editorview.cpp index 10b0929ac05..6c95b9e4ae1 100644 --- a/src/plugins/coreplugin/editormanager/editorview.cpp +++ b/src/plugins/coreplugin/editormanager/editorview.cpp @@ -379,15 +379,21 @@ void EditorView::addCurrentPositionToNavigationHistory(IEditor *editor, const QB while (m_navigationHistory.size() >= 30) { if (m_currentNavigationHistoryPosition > 15) { - m_navigationHistory.takeFirst(); + m_navigationHistory.removeFirst(); --m_currentNavigationHistoryPosition; } else { - m_navigationHistory.takeLast(); + m_navigationHistory.removeLast(); } } updateNavigatorActions(); } +void EditorView::cutForwardNavigationHistory() +{ + while (m_currentNavigationHistoryPosition < m_navigationHistory.size() - 1) + m_navigationHistory.removeLast(); +} + void EditorView::updateNavigatorActions() { m_toolBar->setCanGoBack(canGoBack()); diff --git a/src/plugins/coreplugin/editormanager/editorview.h b/src/plugins/coreplugin/editormanager/editorview.h index e483e3da2db..748284f1a00 100644 --- a/src/plugins/coreplugin/editormanager/editorview.h +++ b/src/plugins/coreplugin/editormanager/editorview.h @@ -135,6 +135,8 @@ public slots: public: void addCurrentPositionToNavigationHistory(IEditor *editor = 0, const QByteArray &saveState = QByteArray()); + void cutForwardNavigationHistory(); + inline QList editorHistory() const { return m_editorHistory; } void copyNavigationHistoryFrom(EditorView* other); diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index 600ff99abdc..226b27a8610 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -1791,6 +1791,7 @@ bool CPPEditor::openCppEditorAt(const Link &link) if (baseTextDocument()->fileName() == link.fileName) { Core::EditorManager *editorManager = Core::EditorManager::instance(); + editorManager->cutForwardNavigationHistory(); editorManager->addCurrentPositionToNavigationHistory(); gotoLine(link.line, link.column); setFocus(); diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp index 12d2c113214..6e55c6d0368 100644 --- a/src/plugins/texteditor/basetexteditor.cpp +++ b/src/plugins/texteditor/basetexteditor.cpp @@ -145,6 +145,7 @@ ITextEditor *BaseTextEditor::openEditorAt(const QString &fileName, bool *newEditor) { Core::EditorManager *editorManager = Core::EditorManager::instance(); + editorManager->cutForwardNavigationHistory(); editorManager->addCurrentPositionToNavigationHistory(); Core::IEditor *editor = editorManager->openEditor(fileName, editorKind, Core::EditorManager::IgnoreNavigationHistory, newEditor);