IDEA-194482 ui: fix focus loss when switching tabs in toolwindow

Fix regression after c53b0b87bc:
We no longer use `content.getComponent().transferFocus()` to transfer focus,
so should pass correct focusable component to the `ContentManagerImpl.requestFocus`.
This commit is contained in:
Aleksey Pivovarov
2018-11-20 16:58:59 +03:00
parent 660fdc8a2e
commit b474e9882c
@@ -13,6 +13,7 @@ import com.intellij.ui.content.AlertIcon;
import com.intellij.ui.content.Content;
import com.intellij.ui.content.ContentManager;
import com.intellij.util.IconUtil;
import com.intellij.util.ObjectUtils;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -72,7 +73,11 @@ public class ContentImpl extends UserDataHolderBase implements Content {
@Override
public JComponent getPreferredFocusableComponent() {
return myFocusRequest == null ? myComponent : myFocusRequest.compute();
if (myFocusRequest != null) return myFocusRequest.compute();
if (myComponent == null) return null;
Container traversalRoot = myComponent.isFocusCycleRoot() ? myComponent : myComponent.getFocusCycleRootAncestor();
if (traversalRoot == null) return null;
return ObjectUtils.tryCast(traversalRoot.getFocusTraversalPolicy().getDefaultComponent(myComponent), JComponent.class);
}
@Override