diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 216dd21c43353cfce6450f199e6b30b1f16aa084..2aa251b4da43b020d27d5156bec9094a899b19c6 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -803,10 +803,7 @@ void MainWindow::openFiles(const QStringList &fileNames) void MainWindow::setFocusToEditor() { QWidget *focusWidget = qApp->focusWidget(); - // ### Duplicated code from EditMode::makeSureEditorManagerVisible - IMode *currentMode = m_coreImpl->modeManager()->currentMode(); - if (currentMode && currentMode->uniqueModeName() != QLatin1String(Constants::MODE_EDIT) && - currentMode->uniqueModeName() != QLatin1String("GdbDebugger.Mode.Debug")) + if (!EditorManager::instance()->isVisible()) { m_coreImpl->modeManager()->activateMode(QLatin1String(Constants::MODE_EDIT)); } @@ -814,11 +811,23 @@ void MainWindow::setFocusToEditor() if (IEditor *editor = m_editorManager->currentEditor()) editor->widget()->setFocus(); - if (focusWidget && focusWidget == qApp->focusWidget()) { - if (FindToolBarPlaceHolder::getCurrent()) - FindToolBarPlaceHolder::getCurrent()->hide(); - OutputPaneManager::instance()->slotHide(); - RightPaneWidget::instance()->setShown(false); + bool focusWasAlreadyInEditor = (focusWidget && focusWidget == qApp->focusWidget()); + if (focusWasAlreadyInEditor) { + bool stuffVisible = + (FindToolBarPlaceHolder::getCurrent() && + FindToolBarPlaceHolder::getCurrent()->isVisible()) + || (OutputPanePlaceHolder::getCurrent() && + OutputPanePlaceHolder::getCurrent()->isVisible()) + || (RightPanePlaceHolder::current() && + RightPanePlaceHolder::current()->isVisible()); + if (stuffVisible) { + if (FindToolBarPlaceHolder::getCurrent()) + FindToolBarPlaceHolder::getCurrent()->hide(); + OutputPaneManager::instance()->slotHide(); + RightPaneWidget::instance()->setShown(false); + } else { + m_coreImpl->modeManager()->activateMode(QLatin1String(Constants::MODE_EDIT)); + } } }