diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index d1c6334ecf1eda8aeca6007c0e3d7ec93946dcd9..0232298083310880aea04d5bb638869764523330 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -897,8 +897,11 @@ void MainWindow::setFocusToEditor()
     // give focus to the editor if we have one
     if (IEditor *editor = m_editorManager->currentEditor()) {
         if (qApp->focusWidget() != editor->widget()->focusWidget()) {
-            editor->widget()->setFocus();
-            focusWasMovedToEditor = editor->widget()->hasFocus();
+            QWidget *w = editor->widget()->focusWidget();
+            if (!w)
+                w = editor->widget();
+            w->setFocus();
+            focusWasMovedToEditor = w->hasFocus();
         }
     }
 
diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp
index f4d7c5a9c4d53106f923d4341151e0f64d5ae9d0..29e15e718d9459afce718cc9c1300a1c0e80dd99 100644
--- a/src/plugins/coreplugin/outputpanemanager.cpp
+++ b/src/plugins/coreplugin/outputpanemanager.cpp
@@ -386,8 +386,12 @@ void OutputPaneManager::slotHide()
             m_buttons.value(idx)->setChecked(false);
         if (m_pageMap.value(idx))
             m_pageMap.value(idx)->visibilityChanged(false);
-        if (IEditor *editor = Core::EditorManager::instance()->currentEditor())
-            editor->widget()->setFocus();
+        if (IEditor *editor = Core::EditorManager::instance()->currentEditor()) {
+            QWidget *w = editor->widget()->focusWidget();
+            if (!w)
+                w = editor->widget();
+            w->setFocus();
+        }
     }
 }
 
diff --git a/src/plugins/find/currentdocumentfind.cpp b/src/plugins/find/currentdocumentfind.cpp
index acbed55a96b2838ed418bdd59ab9b6da257b05a2..6f4175416c2a600c235b664347d30d680008b559 100644
--- a/src/plugins/find/currentdocumentfind.cpp
+++ b/src/plugins/find/currentdocumentfind.cpp
@@ -221,7 +221,10 @@ void CurrentDocumentFind::clearFindSupport()
 bool CurrentDocumentFind::setFocusToCurrentFindSupport()
 {
     if (m_currentFind && m_currentWidget) {
-        m_currentWidget->setFocus();
+        QWidget *w = m_currentWidget->focusWidget();
+        if (!w)
+            w = m_currentWidget;
+        w->setFocus();
         return true;
     }
     return false;