diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index 31932af280da1fbc77d79ff0b0e62adda91a8c88..1a474a7f637a436b67af4d29684707e65913d9bb 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -1530,7 +1530,6 @@ IEditor *ClearCasePlugin::showOutputInEditor(const QString& title, const QString
         e->setSource(source);
     if (codec)
         e->setCodec(codec);
-    EditorManager::activateEditor(editor);
     return editor;
 }
 
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 20c853e39bfaccd6a73816f80e7c46f19713e2c5..51cec16c322506efeb72353e3758ed4f0655172e 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -1657,11 +1657,15 @@ QStringList EditorManager::getOpenFileNames()
 
 IEditor *EditorManager::openEditorWithContents(const Id &editorId,
                                         QString *titlePattern,
-                                        const QByteArray &contents)
+                                        const QByteArray &contents,
+                                        OpenEditorFlags flags)
 {
     if (debugEditorManager)
         qDebug() << Q_FUNC_INFO << editorId.name() << titlePattern << contents;
 
+    if (flags & EditorManager::OpenInOtherSplit)
+        m_instance->gotoOtherSplit();
+
     QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
 
     QString title;
@@ -1712,6 +1716,7 @@ IEditor *EditorManager::openEditorWithContents(const Id &editorId,
 
     m_instance->addEditor(edt);
     QApplication::restoreOverrideCursor();
+    activateEditor(edt, flags);
     return edt;
 }
 
diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h
index 3c5ab171e8ae103f42b62e0984dfcc493b3e41c6..d84f4caa2ea27bd3bacea096358a8d76a627da0c 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.h
+++ b/src/plugins/coreplugin/editormanager/editormanager.h
@@ -113,8 +113,9 @@ public:
     static IEditor *openEditorAt(const QString &fileName,  int line, int column = 0,
                                  const Id &editorId = Id(), OpenEditorFlags flags = NoFlags,
                                  bool *newEditor = 0);
-    static IEditor *openEditorWithContents(const Id &editorId,
-        QString *titlePattern = 0, const QByteArray &contents = QByteArray());
+    static IEditor *openEditorWithContents(const Id &editorId, QString *titlePattern = 0,
+                                           const QByteArray &contents = QByteArray(),
+                                           OpenEditorFlags flags = NoFlags);
 
     static bool openExternalEditor(const QString &fileName, const Id &editorId);
 
diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index fcca910b39de005d631760b20d1cf4c095cdb324..9e7bb2fe472b426ae9c94a1736c0eaf96eb9d048 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -1182,7 +1182,6 @@ IEditor *CvsPlugin::showOutputInEditor(const QString& title, const QString &outp
         e->setSource(source);
     if (codec)
         e->setCodec(codec);
-    EditorManager::activateEditor(editor);
     return editor;
 }
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 2ea8a67fa574b2210dc575b4a532f66d87b69eb6..b4160c83759919fa91e9c06d51f5691f8300774a 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -2542,9 +2542,9 @@ void DebuggerPluginPrivate::openTextEditor(const QString &titlePattern0,
         return;
     QString titlePattern = titlePattern0;
     IEditor *editor = EditorManager::openEditorWithContents(
-        CC::K_DEFAULT_TEXT_EDITOR_ID, &titlePattern, contents.toUtf8());
+                CC::K_DEFAULT_TEXT_EDITOR_ID, &titlePattern, contents.toUtf8(),
+                EditorManager::IgnoreNavigationHistory);
     QTC_ASSERT(editor, return);
-    EditorManager::activateEditor(editor, EditorManager::IgnoreNavigationHistory);
 }
 
 void DebuggerPluginPrivate::showMessage(const QString &msg, int channel, int timeout)
diff --git a/src/plugins/debugger/disassembleragent.cpp b/src/plugins/debugger/disassembleragent.cpp
index 2fec3926871de9851ef42dba6951aec9e1597606..974c5abb86fc14e6f64e35ce476b338cb45242fe 100644
--- a/src/plugins/debugger/disassembleragent.cpp
+++ b/src/plugins/debugger/disassembleragent.cpp
@@ -316,10 +316,10 @@ void DisassemblerAgent::setContentsToEditor(const DisassemblerLines &contents)
                 qobject_cast<BaseTextEditorWidget *>(d->editor->widget());
         if (baseTextEdit)
             baseTextEdit->setRequestMarkEnabled(true);
+    } else {
+        EditorManager::activateEditor(d->editor);
     }
 
-    EditorManager::activateEditor(d->editor);
-
     QPlainTextEdit *plainTextEdit =
         qobject_cast<QPlainTextEdit *>(d->editor->widget());
     QTC_ASSERT(plainTextEdit, return);
diff --git a/src/plugins/debugger/memoryagent.cpp b/src/plugins/debugger/memoryagent.cpp
index 8f8d14a1d61752e50daf3a723932c92e42293167..4dc53de8256a50a2ed3392d107efcd77e19101b1 100644
--- a/src/plugins/debugger/memoryagent.cpp
+++ b/src/plugins/debugger/memoryagent.cpp
@@ -188,7 +188,6 @@ bool MemoryAgent::doCreateBinEditor(quint64 addr, unsigned flags,
     MemoryView::setBinEditorRange(editorBinEditor, addr, MemoryAgent::DataRange, MemoryAgent::BinBlockSize);
     MemoryView::setBinEditorMarkup(editorBinEditor, ml);
     m_editors << editor;
-    EditorManager::activateEditor(editor);
     return true;
 }
 
diff --git a/src/plugins/debugger/sourceagent.cpp b/src/plugins/debugger/sourceagent.cpp
index ddcd76e1322242f5d4724963549160e220c2bc5f..bade9f6961990f36a6e656b56ed5cee8f4fd1370 100644
--- a/src/plugins/debugger/sourceagent.cpp
+++ b/src/plugins/debugger/sourceagent.cpp
@@ -120,10 +120,10 @@ void SourceAgent::setContent(const QString &filePath, const QString &content)
                 qobject_cast<BaseTextEditorWidget *>(d->editor->widget());
         if (baseTextEdit)
             baseTextEdit->setRequestMarkEnabled(true);
+    } else {
+        EditorManager::activateEditor(d->editor);
     }
 
-    EditorManager::activateEditor(d->editor);
-
     QPlainTextEdit *plainTextEdit =
         qobject_cast<QPlainTextEdit *>(d->editor->widget());
     QTC_ASSERT(plainTextEdit, return);
diff --git a/src/plugins/diffeditor/diffeditorplugin.cpp b/src/plugins/diffeditor/diffeditorplugin.cpp
index afe74fbd98f7fda31fe9d98e186613f09ffb7002..f87d3851996d98e13c7e21160eb491f9b9c7fe16 100644
--- a/src/plugins/diffeditor/diffeditorplugin.cpp
+++ b/src/plugins/diffeditor/diffeditorplugin.cpp
@@ -107,8 +107,6 @@ void DiffEditorPlugin::diff()
     if (!editor)
         return;
 
-    Core::EditorManager::activateEditor(editor);
-
     const QString text1 = getFileContents(fileName1);
     const QString text2 = getFileContents(fileName2);
 
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 1de0b04c41f37ca2c01c2f41e7f1ee54f94d5cf6..b2a9081d9d3e615f9c8e7dfdd5709366b3cf1eab 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -1140,7 +1140,6 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(
     }
 
     rc->setForceReadOnly(true);
-    Core::EditorManager::activateEditor(outputEditor);
 
     if (configWidget)
         rc->setConfigurationWidget(configWidget);
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index f54712ec5e03f603aadd9345eea5ab6e909893e4..aea4f4b6b603016150f5b74f311238fd494363e7 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -1194,7 +1194,6 @@ Core::IEditor *PerforcePlugin::showOutputInEditor(const QString &title, const QS
     e->baseTextDocument()->setSuggestedFileName(s);
     if (codec)
         e->setCodec(codec);
-    Core::EditorManager::activateEditor(editor);
     return editor;
 }
 
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index cd8de10eb4cb881de162db98e7741af1f2313d41..8a80326adc6f8ce145f02a12de7aa4b401633205 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -1036,7 +1036,6 @@ Core::IEditor *SubversionPlugin::showOutputInEditor(const QString &title, const
         e->setSource(source);
     if (codec)
         e->setCodec(codec);
-    Core::EditorManager::activateEditor(editor);
     return editor;
 }
 
diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp
index b4ff6833d89872c619ea93722245cc764265ed0c..21ef4dd5efb360ad47c2d6000079a1956ce3aaad 100644
--- a/src/plugins/vcsbase/vcsbaseclient.cpp
+++ b/src/plugins/vcsbase/vcsbaseclient.cpp
@@ -574,6 +574,7 @@ VcsBase::VcsBaseEditorWidget *VcsBaseClient::createVcsEditor(Core::Id kind, QStr
         outputEditor->document()->setContents(progressMsg.toUtf8());
         baseEditor = VcsBase::VcsBaseEditorWidget::getVcsBaseEditor(outputEditor);
         QTC_ASSERT(baseEditor, return 0);
+        Core::EditorManager::activateEditor(outputEditor);
     } else {
         outputEditor = Core::EditorManager::openEditorWithContents(kind, &title, progressMsg.toUtf8());
         outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue);
@@ -587,7 +588,6 @@ VcsBase::VcsBaseEditorWidget *VcsBaseClient::createVcsEditor(Core::Id kind, QStr
     }
 
     baseEditor->setForceReadOnly(true);
-    Core::EditorManager::activateEditor(outputEditor);
     return baseEditor;
 }