diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index d9ab7b9ef23041104a09dacb019d0a3cabcec32a..8f5f8619dc7dd57def805d17b50424c97c887638 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -883,8 +883,10 @@ bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool ask
         return false;
 
     // add duplicates
+    QList<IEditor *> duplicates;
     foreach(IEditor *editor, acceptedEditors)
-        acceptedEditors += d->m_editorModel->duplicatesFor(editor);
+        duplicates += d->m_editorModel->duplicatesFor(editor);
+    acceptedEditors += duplicates;
 
     QList<EditorView*> closedViews;
 
@@ -914,8 +916,13 @@ bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool ask
             activateEditor(view, newCurrent, NoActivate);
         } else {
             QModelIndex idx = d->m_editorModel->firstRestoredEditor();
-            if (idx.isValid())
+            if (idx.isValid()) {
                 activateEditorForIndex(view, idx, NoActivate);
+            } else {
+                const QList<IEditor *> editors = d->m_editorModel->editors();
+                if (!editors.isEmpty())
+                    activateEditor(view, editors.last(), NoActivate);
+            }
         }
     }