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;