diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 4d6552f4379..ea1ed140159 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -904,8 +904,10 @@ Core::IEditor *EditorManager::activateEditor(Core::Internal::EditorView *view, C if (!(flags & NoActivate)) { setCurrentEditor(editor, (flags & IgnoreNavigationHistory)); - ensureEditorManagerVisible(); - editor->widget()->setFocus(); + if (!(flags & NoModeSwitch)) + ensureEditorManagerVisible(); + if (isVisible()) + editor->widget()->setFocus(); } return editor; } diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index 6e8d59c1bc2..3862e1440f8 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -106,7 +106,8 @@ public: enum OpenEditorFlag { NoActivate = 1, - IgnoreNavigationHistory = 2 + IgnoreNavigationHistory = 2, + NoModeSwitch = 4 }; Q_DECLARE_FLAGS(OpenEditorFlags, OpenEditorFlag)