diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index c3933ad109861349d09e8196bd037557f2fbc322..b8ddd1bc134b7f807ff70606805914bd8d9ac136 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -165,6 +165,10 @@ struct EditorManagerPrivate {
 
     QList<IEditor *> m_editorHistory;
     QList<EditLocation *> m_navigationHistory;
+    void clearNavigationHistory() {
+        qDeleteAll(m_navigationHistory);
+        m_navigationHistory.clear();
+    }
     int currentNavigationHistoryPosition;
     Internal::OpenEditorsWindow *m_windowPopup;
     Core::BaseView *m_openEditorsView;
@@ -205,8 +209,7 @@ EditorManagerPrivate::EditorManagerPrivate(ICore *core, QWidget *parent) :
 
 EditorManagerPrivate::~EditorManagerPrivate()
 {
-    qDeleteAll(m_navigationHistory);
-    m_navigationHistory.clear();
+    clearNavigationHistory();
 }
 
 EditorManager *EditorManager::m_instance = 0;
@@ -654,7 +657,11 @@ QList<IFile *> EditorManager::filesForEditors(QList<IEditor *> editors) const
 bool EditorManager::closeAllEditors(bool askAboutModifiedEditors)
 {
     m_d->m_editorModel->removeAllRestoredEditors();
-    return closeEditors(openedEditors(), askAboutModifiedEditors);
+    if (closeEditors(openedEditors(), askAboutModifiedEditors)) {
+        m_d->clearNavigationHistory();
+        return true;
+    }
+    return false;
 }
 
 void EditorManager::closeOtherEditors()