diff --git a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java index e8f6b0c2920e..07296dd0442b 100644 --- a/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java +++ b/platform/platform-api/src/com/intellij/ui/tabs/impl/JBTabsImpl.java @@ -719,6 +719,13 @@ public class JBTabsImpl extends JComponent return new ActionCallback.Done(); } else { + Component owner = myFocusManager.getFocusOwner(); + JComponent c = info.getComponent(); + if (c != null && owner != null) { + if (c == owner || SwingUtilities.isDescendingFrom(owner, c)) { + return new ActionCallback.Done(); + } + } return requestFocus(getToFocus()); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java index 6099f4e154b6..b47da4f6dd54 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java @@ -120,7 +120,7 @@ final class EditorTabbedContainer implements Disposable, CloseAction.CloseTarget }, "EditorChange", null); return result; } - }); + }).getPresentation().setRequestFocusOnLastFocusedComponent(true); setTabPlacement(UISettings.getInstance().EDITOR_TAB_PLACEMENT); diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java index f223f74122b1..7332eb1db5e7 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java @@ -581,18 +581,7 @@ public class EditorsSplitters extends JPanel { if (window != null) { final EditorWithProviderComposite selectedEditor = myCurrentWindow.getSelectedEditor(); if (selectedEditor != null) { - boolean alreadyFocused = false; - final JComponent comp = selectedEditor.getComponent(); - final Component owner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); - if (owner != null && comp != null) { - alreadyFocused = owner == comp || SwingUtilities.isDescendingFrom(owner, comp); - } - - if (requestFocus && !alreadyFocused) { - IdeFocusManager.getInstance(myManager.getProject()).requestFocus(comp, requestFocus).doWhenDone(fireRunnable); - } else { - fireRunnable.run(); - } + fireRunnable.run(); } } else { fireRunnable.run();