diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index ff16068c7f605b916b990810a2ae179c638fd82b..f084f20080e71157f61404d941b918ea4c79266e 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -516,6 +516,9 @@ void EditorManager::setCurrentView(Core::Internal::SplitterOrView *view)
         old->update();
     if (view)
         view->update();
+
+    if (view && !view->editor())
+        view->setFocus();
 }
 
 Core::Internal::SplitterOrView *EditorManager::currentView() const
@@ -715,6 +718,7 @@ bool EditorManager::closeEditors(const QList<IEditor*> editorsToClose, bool askA
 
     foreach (EditorView *view, currentViews) {
         IEditor *newCurrent = view->currentEditor();
+#if 0
         if (!newCurrent)
             newCurrent = pickUnusedEditor();
         if (!newCurrent) {
@@ -726,7 +730,10 @@ bool EditorManager::closeEditors(const QList<IEditor*> editorsToClose, bool askA
                 }
             }
         }
-
+#else
+    if (!newCurrent && view == m_d->m_view)
+        newCurrent = pickUnusedEditor();
+#endif
         if (newCurrent) {
             activateEditor(view, newCurrent, NoActivate);
         } else {
@@ -833,15 +840,18 @@ Core::IEditor *EditorManager::placeEditor(Core::Internal::EditorView *view, Core
                 sourceView->view()->removeEditor(editor);
                 view->addEditor(editor);
                 view->setCurrentEditor(editor);
+#if 0
                 if (!sourceView->editor()) {
                     if (IEditor *replacement = pickUnusedEditor()) {
                         sourceView->view()->addEditor(replacement);
                     }
                 }
+#endif
                 return editor;
             } else if (duplicateSupported) {
                 editor = duplicateEditor(editor);
                 Q_ASSERT(editor);
+                m_d->m_editorModel->makeOriginal(editor);
             }
         }
         view->addEditor(editor);
diff --git a/src/plugins/coreplugin/editormanager/editorview.cpp b/src/plugins/coreplugin/editormanager/editorview.cpp
index 48edfc1a009c2bfbde20070664988b8e6bfe137d..b9838a8b59585a4f11e2103973b7f83439b8acc6 100644
--- a/src/plugins/coreplugin/editormanager/editorview.cpp
+++ b/src/plugins/coreplugin/editormanager/editorview.cpp
@@ -229,6 +229,17 @@ QList<IEditor *> EditorModel::duplicatesFor(IEditor *editor) const
     return result;
 }
 
+void EditorModel::makeOriginal(IEditor *duplicate)
+{
+    Q_ASSERT(isDuplicate(duplicate));
+    IEditor *original = originalForDuplicate(duplicate);
+    Q_ASSERT(original);
+    int i = findEditor(original);
+    m_editors[i].editor = duplicate;
+    m_duplicateEditors.removeOne(duplicate);
+    m_duplicateEditors.append(original);
+}
+
 void EditorModel::emitDataChanged(IEditor *editor)
 {
     int idx = findEditor(editor);
@@ -504,7 +515,12 @@ bool EditorView::hasEditor(IEditor *editor) const
 void EditorView::closeView()
 {
     EditorManager *em = CoreImpl::instance()->editorManager();
+#if 1
+    if (IEditor *editor = currentEditor())
+        em->closeEditor(editor);
+#else
     em->closeView(this);
+#endif
 }
 
 void EditorView::removeEditor(IEditor *editor)
@@ -547,7 +563,9 @@ void EditorView::setCurrentEditor(IEditor *editor)
 {
     if (!editor || m_container->count() <= 0
         || m_container->indexOf(editor->widget()) == -1)
+        // ### TODO the combo box m_editorList should show an empty item
         return;
+
     m_editors.removeAll(editor);
     m_editors.append(editor);
 
@@ -862,20 +880,24 @@ void SplitterOrView::split(Qt::Orientation orientation)
     EditorManager *em = CoreImpl::instance()->editorManager();
     Core::IEditor *e = m_view->currentEditor();
 
+    SplitterOrView *view = 0;
     if (e) {
 
         m_view->removeEditor(e);
         m_splitter->addWidget(new SplitterOrView(e));
-
+#if 0
         if (e->duplicateSupported()) {
             Core::IEditor *duplicate = em->duplicateEditor(e);
             m_splitter->addWidget(new SplitterOrView(duplicate));
         } else {
             m_splitter->addWidget(new SplitterOrView());
         }
+#else
+        m_splitter->addWidget((view = new SplitterOrView()));
+#endif
     } else {
         m_splitter->addWidget(new SplitterOrView());
-        m_splitter->addWidget(new SplitterOrView());
+        m_splitter->addWidget((view = new SplitterOrView()));
     }
 
     m_layout->setCurrentWidget(m_splitter);
@@ -886,9 +908,11 @@ void SplitterOrView::split(Qt::Orientation orientation)
         m_view = 0;
     }
 
-    em->setCurrentView(findFirstView());
+    em->setCurrentView(view);
+#if 0
     if (e)
         em->activateEditor(e);
+#endif
 }
 
 void SplitterOrView::unsplitAll()
diff --git a/src/plugins/coreplugin/editormanager/editorview.h b/src/plugins/coreplugin/editormanager/editorview.h
index 13eb957b299a1655e6eb14bfa1e8e720b6a91c0b..b62645baaaf45f67889b9aa2f6729d1cfbac18a0 100644
--- a/src/plugins/coreplugin/editormanager/editorview.h
+++ b/src/plugins/coreplugin/editormanager/editorview.h
@@ -95,6 +95,7 @@ public:
     bool isDuplicate(IEditor *editor) const;
     QList<IEditor *> duplicatesFor(IEditor *editor) const;
     IEditor *originalForDuplicate(IEditor *duplicate) const;
+    void makeOriginal(IEditor *duplicate);
     QModelIndex indexOf(IEditor *editor) const;
     QModelIndex indexOf(const QString &filename) const;