diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index c3d04a6a2ce32fce4bc854ce89a8c1ae7e051919..e898895f39a172d2646a06a4572d29e9bc82c37c 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -1225,12 +1225,15 @@ void EditorManager::closeDuplicate(Core::IEditor *editor)
     }
 }
 
-Core::IEditor *EditorManager::pickUnusedEditor() const
+Core::IEditor *EditorManager::pickUnusedEditor(EditorView **foundView) const
 {
     foreach (IEditor *editor, openedEditors()) {
         EditorView *view = viewForEditor(editor);
-        if (!view || view->currentEditor() != editor)
+        if (!view || view->currentEditor() != editor) {
+            if (foundView)
+                *foundView = view;
             return editor;
+        }
     }
     return 0;
 }
@@ -1282,8 +1285,12 @@ Core::IEditor *EditorManager::placeEditor(Core::Internal::EditorView *view, Core
                 view->addEditor(editor);
                 view->setCurrentEditor(editor);
                 if (!sourceView->currentEditor()) {
-                    if (IEditor *replacement = pickUnusedEditor())
+                    EditorView *replacementView = 0;
+                    if (IEditor *replacement = pickUnusedEditor(&replacementView)) {
+                        if (replacementView)
+                            replacementView->removeEditor(replacement);
                         sourceView->addEditor(replacement);
+                    }
                 }
                 return editor;
             } else if (duplicateSupported) {
diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h
index 556dfc65aa83775d501fb005c98e2d585b973674..f76fc1519364e4f951a423fa0eb3380089c742bd 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.h
+++ b/src/plugins/coreplugin/editormanager/editormanager.h
@@ -277,7 +277,7 @@ private:
     void closeView(Internal::EditorView *view);
     void emptyView(Internal::EditorView *view);
     static void splitNewWindow(Internal::EditorView *view);
-    IEditor *pickUnusedEditor() const;
+    IEditor *pickUnusedEditor(Internal::EditorView **foundView = 0) const;
     void addDocumentToRecentFiles(IDocument *document);
     void updateAutoSave();
     void setCloseSplitEnabled(Internal::SplitterOrView *splitterOrView, bool enable);