diff --git a/platform/platform-api/src/com/intellij/openapi/ui/ThreeComponentsSplitter.java b/platform/platform-api/src/com/intellij/openapi/ui/ThreeComponentsSplitter.java index 0fec62c755ef..2dc49cf9380f 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/ThreeComponentsSplitter.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/ThreeComponentsSplitter.java @@ -35,7 +35,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.util.*; +import java.util.Arrays; import java.util.List; /** @@ -113,7 +113,11 @@ public class ThreeComponentsSplitter extends JPanel implements Disposable { } Component findChildToFocus (Component component) { - + final Window ancestor = SwingUtilities.getWindowAncestor(ThreeComponentsSplitter.this); + final Component mostRecentFocusOwner = ancestor.getMostRecentFocusOwner(); + if (mostRecentFocusOwner != null && mostRecentFocusOwner.isShowing()) { + return mostRecentFocusOwner; + } if (component instanceof JPanel) { JPanel container = (JPanel)component; final FocusTraversalPolicy policy = container.getFocusTraversalPolicy(); diff --git a/platform/platform-impl/src/com/intellij/ide/actions/ToggleDistractionFreeModeAction.java b/platform/platform-impl/src/com/intellij/ide/actions/ToggleDistractionFreeModeAction.java index 0a8679f58e05..d61b4c0bb6fe 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/ToggleDistractionFreeModeAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/ToggleDistractionFreeModeAction.java @@ -29,6 +29,7 @@ import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.registry.RegistryValue; +import com.intellij.openapi.wm.WindowManager; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -79,6 +80,10 @@ public class ToggleDistractionFreeModeAction extends DumbAwareAction { EditorUtil.reinitSettings(); DaemonCodeAnalyzer.getInstance(project).settingsChanged(); EditorFactory.getInstance().refreshAllEditors(); + final JFrame projectJFrame = WindowManager.getInstance().getFrame(project); + if (projectJFrame != null) { + projectJFrame.transferFocus(); + } } public static void applyAndSave(@NotNull PropertiesComponent p,