From 42104b9222c4a5e464b4b30586920bb0cefd95b8 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Wed, 2 Jul 2014 18:39:02 +0400 Subject: [PATCH] IDEA-73140 XDebugger: Debugger always switches you to "Debugger" tab when first breakpoint is hit --- platform/platform-resources/src/idea/LangActions.xml | 1 + .../com/intellij/xdebugger/impl/XDebugSessionImpl.java | 10 ++++++++-- .../impl}/actions/FocusOnBreakpointAction.java | 2 +- .../xdebugger/impl/actions/XDebuggerActions.java | 2 ++ .../intellij/xdebugger/impl/ui/XDebugSessionTab.java | 4 ++++ resources/src/idea/JavaActions.xml | 1 - 6 files changed, 16 insertions(+), 4 deletions(-) rename {java/debugger/impl/src/com/intellij/debugger/ui/breakpoints => platform/xdebugger-impl/src/com/intellij/xdebugger/impl}/actions/FocusOnBreakpointAction.java (94%) diff --git a/platform/platform-resources/src/idea/LangActions.xml b/platform/platform-resources/src/idea/LangActions.xml index 3c8d9445f847..4d38312f944e 100644 --- a/platform/platform-resources/src/idea/LangActions.xml +++ b/platform/platform-resources/src/idea/LangActions.xml @@ -681,6 +681,7 @@ + diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java index 546c40d29cf8..fd86e964e1b1 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java @@ -694,6 +694,14 @@ public class XDebugSessionImpl implements XDebugSession { myActiveNonLineBreakpoint = !(breakpoint instanceof XLineBreakpoint) ? breakpoint : null; positionReached(suspendContext); + UIUtil.invokeLaterIfNeeded(new Runnable() { + @Override + public void run() { + mySessionTab.toFront(); + mySessionTab.getUi().attractBy(XDebuggerUIConstants.LAYOUT_VIEW_BREAKPOINT_CONDITION); + } + }); + if (breakpoint instanceof XLineBreakpoint && ((XLineBreakpoint)breakpoint).isTemporary()) { handleTemporaryBreakpointHit(breakpoint); } @@ -775,8 +783,6 @@ public class XDebugSessionImpl implements XDebugSession { initSessionTab(); showSessionTab(); } - mySessionTab.toFront(); - mySessionTab.getUi().attractBy(XDebuggerUIConstants.LAYOUT_VIEW_BREAKPOINT_CONDITION); if (myCurrentPosition != null) { adjustMouseTrackingCounter(myCurrentPosition, 1); } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/actions/FocusOnBreakpointAction.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/FocusOnBreakpointAction.java similarity index 94% rename from java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/actions/FocusOnBreakpointAction.java rename to platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/FocusOnBreakpointAction.java index 91b223c613c9..8eb8d8ee99c3 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/actions/FocusOnBreakpointAction.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/FocusOnBreakpointAction.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.debugger.ui.breakpoints.actions; +package com.intellij.xdebugger.impl.actions; import com.intellij.execution.ui.actions.AbstractFocusOnAction; import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants; diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/XDebuggerActions.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/XDebuggerActions.java index 7a00d6c156b7..557a1104acda 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/XDebuggerActions.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/actions/XDebuggerActions.java @@ -68,4 +68,6 @@ public interface XDebuggerActions { @NonNls String AUTO_TOOLTIP = "XDebugger.AutoTooltip"; @NonNls String MARK_OBJECT = "Debugger.MarkObject"; + + @NonNls String FOCUS_ON_BREAKPOINT = "Debugger.FocusOnBreakpoint"; } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java index ce349fccc292..427d385c8865 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java @@ -237,6 +237,10 @@ public class XDebugSessionTab extends DebuggerSessionTabBase { initLogConsoles(runConfiguration, myRunContentDescriptor.getProcessHandler(), myConsole); } + final DefaultActionGroup focus = new DefaultActionGroup(); + focus.add(ActionManager.getInstance().getAction(XDebuggerActions.FOCUS_ON_BREAKPOINT)); + myUi.getOptions().setAdditionalFocusActions(focus); + rebuildViews(); } diff --git a/resources/src/idea/JavaActions.xml b/resources/src/idea/JavaActions.xml index cae268102d76..81a791f42208 100644 --- a/resources/src/idea/JavaActions.xml +++ b/resources/src/idea/JavaActions.xml @@ -184,7 +184,6 @@ -