From b6d19048664f90256bbe838280a6484da41d4874 Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Fri, 25 May 2012 13:02:23 +0400 Subject: [PATCH] IDEA-86397 Delete line (Ctrl+Y) moves caret to the 1st column position Don't restore caret position when it's not necessary --- .../com/intellij/openapi/editor/EditorModificationUtil.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java b/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java index e80150193419..260da03d04ce 100644 --- a/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java +++ b/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java @@ -45,11 +45,15 @@ public class EditorModificationUtil { int selectionEnd = selectionModel.getSelectionEnd(); final CaretModel caretModel = editor.getCaretModel(); + final int caretOffset = caretModel.getOffset(); + boolean restorePosition = caretOffset > selectionStart && caretOffset < selectionEnd; final VisualPosition position = caretModel.getVisualPosition(); caretModel.moveToOffset(selectionStart); selectionModel.removeSelection(); editor.getDocument().deleteString(selectionStart, selectionEnd); - caretModel.moveToVisualPosition(position); // Try to preserve visual caret position + if (restorePosition) { + caretModel.moveToVisualPosition(position); // Try to preserve visual caret position. + } editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); }