From 1ad6a1b42066a6de31ef8df339c64cc01ad99c83 Mon Sep 17 00:00:00 2001 From: Kirill Kalishev Date: Mon, 18 Apr 2011 19:33:24 +0400 Subject: [PATCH] toolwindow: optionally do not track last focused component --- .../src/com/intellij/openapi/wm/ex/ToolWindowEx.java | 3 +++ .../com/intellij/openapi/wm/impl/ToolWindowImpl.java | 11 +++++++++++ .../wm/impl/commands/RequestFocusInToolWindowCmd.java | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/ex/ToolWindowEx.java b/platform/platform-impl/src/com/intellij/openapi/wm/ex/ToolWindowEx.java index 8e3ddad4d4e5..373f09bff621 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/ex/ToolWindowEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/ex/ToolWindowEx.java @@ -47,5 +47,8 @@ public interface ToolWindowEx extends ToolWindow { InternalDecorator getDecorator(); + void setUseLastFocusedOnActivation(boolean focus); + + boolean isUseLastFocusedOnActivation(); } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.java index 2890cf19d18a..b9b54d8abcd3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.java @@ -71,6 +71,7 @@ public final class ToolWindowImpl implements ToolWindowEx { return myComponent != null && myComponent.isShowing(); } }; + private boolean myUseLastFocused = true; ToolWindowImpl(final ToolWindowManagerImpl toolWindowManager, final String id, boolean canCloseContent, @Nullable final JComponent component) { myToolWindowManager = toolWindowManager; @@ -427,4 +428,14 @@ public final class ToolWindowImpl implements ToolWindowEx { public void showContentPopup(InputEvent inputEvent) { myContentUI.showContentPopup(inputEvent); } + + @Override + public void setUseLastFocusedOnActivation(boolean focus) { + myUseLastFocused = focus; + } + + @Override + public boolean isUseLastFocusedOnActivation() { + return myUseLastFocused; + } } diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/commands/RequestFocusInToolWindowCmd.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/commands/RequestFocusInToolWindowCmd.java index 273c020ffecb..b6f0251f066c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/commands/RequestFocusInToolWindowCmd.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/commands/RequestFocusInToolWindowCmd.java @@ -23,6 +23,7 @@ import com.intellij.openapi.wm.FocusWatcher; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.WindowManager; import com.intellij.openapi.wm.ex.IdeFocusTraversalPolicy; +import com.intellij.openapi.wm.ex.ToolWindowEx; import com.intellij.openapi.wm.impl.FloatingDecorator; import com.intellij.openapi.wm.impl.ToolWindowImpl; import com.intellij.openapi.wm.impl.WindowManagerImpl; @@ -70,7 +71,7 @@ public final class RequestFocusInToolWindowCmd extends FinalizableCommand { return; } - Component preferredFocusedComponent = myFocusWatcher.getFocusedComponent(); + Component preferredFocusedComponent = myToolWindow.isUseLastFocusedOnActivation() ? myFocusWatcher.getFocusedComponent() : null; if (preferredFocusedComponent == null && myToolWindow.getContentManager().getSelectedContent() != null) { preferredFocusedComponent = myToolWindow.getContentManager().getSelectedContent().getPreferredFocusableComponent();