mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user