From 5559d6d412aec4f9d2a03f4aba1bcafd8d7ae9a7 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 8 Sep 2017 20:09:34 +0300 Subject: [PATCH] preserve caret position on mode switch --- .../xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java | 4 ++++ .../com/intellij/xdebugger/impl/ui/XDebuggerEditorBase.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java index cf65339f7a10..ac109195ed2f 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/XDebuggerEvaluationDialog.java @@ -275,10 +275,14 @@ public class XDebuggerEvaluationDialog extends DialogWrapper { myMode = mode; + Editor oldEditor = (myInputComponent != null) ? myInputComponent.getInputEditor().getEditor() : null; + myInputComponent = createInputComponent(mode, text); myMainPanel.removeAll(); myInputComponent.addComponent(myMainPanel, myResultPanel); + XDebuggerEditorBase.copyCaretPosition(oldEditor, myInputComponent.getInputEditor().getEditor()); + mySwitchModeAction.putValue(Action.NAME, getSwitchButtonText(mode)); getInputEditor().requestFocusInEditor(); } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerEditorBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerEditorBase.java index 5255c41d599a..0a26928c9f07 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerEditorBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebuggerEditorBase.java @@ -531,7 +531,7 @@ public abstract class XDebuggerEditorBase implements Expandable { DebuggerUIUtil.getActionShortcutText(IdeActions.ACTION_PREVIOUS_OCCURENCE)); } - private static void copyCaretPosition(@Nullable Editor source, @Nullable Editor destination) { + public static void copyCaretPosition(@Nullable Editor source, @Nullable Editor destination) { if (source != null && destination != null) { destination.getCaretModel().moveToOffset(source.getCaretModel().getOffset()); }