From 611af8fc410d034e8ac0daa214e83ec53dfc509c Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Tue, 18 Nov 2014 15:53:17 +0300 Subject: [PATCH] IDEA-129333 Code folding and "Navigate" actions don't mix well --- .../com/intellij/openapi/editor/impl/CaretImpl.java | 7 ++++--- .../intellij/openapi/editor/impl/EditorImplTest.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java index ca6de1b8c65f..344399ead910 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java @@ -525,10 +525,9 @@ public class CaretImpl extends UserDataHolderBase implements Caret { else { logicalPositionToUse = new LogicalPosition(line, column); } - setCurrentLogicalCaret(logicalPositionToUse); - final int offset = myEditor.logicalPositionToOffset(myLogicalCaret); + final int offset = myEditor.logicalPositionToOffset(logicalPositionToUse); if (debugBuffer != null) { - debugBuffer.append("Resulting logical position to use: ").append(myLogicalCaret).append(". It's mapped to offset ").append(offset).append("\n"); + debugBuffer.append("Resulting logical position to use: ").append(logicalPositionToUse).append(". It's mapped to offset ").append(offset).append("\n"); } FoldRegion collapsedAt = myEditor.getFoldingModel().getCollapsedRegionAtOffset(offset); @@ -554,8 +553,10 @@ public class CaretImpl extends UserDataHolderBase implements Caret { finally { mySkipChangeRequests = false; } + logicalPositionToUse = logicalPositionToUse.visualPositionAware ? logicalPositionToUse.withoutVisualPositionInfo() : logicalPositionToUse; } + setCurrentLogicalCaret(logicalPositionToUse); setLastColumnNumber(myLogicalCaret.column); myDesiredSelectionStartColumn = myDesiredSelectionEndColumn = -1; myVisibleCaret = myEditor.logicalToVisualPosition(myLogicalCaret); diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/EditorImplTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/EditorImplTest.java index c999c6dfed37..ee1575e88dc7 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/EditorImplTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/EditorImplTest.java @@ -111,6 +111,16 @@ public class EditorImplTest extends AbstractEditorTest { assertEquals(new VisualPosition(0, 5), myEditor.logicalToVisualPosition(new LogicalPosition(0, 3))); } + + public void testNavigationIntoFoldedRegionWithSoftWrapsEnabled() throws Exception { + init("something"); + addCollapsedFoldRegion(4, 8, "..."); + EditorTestUtil.configureSoftWraps(myEditor, 1000); + + myEditor.getCaretModel().moveToOffset(5); + + assertEquals(new VisualPosition(0, 5), myEditor.getCaretModel().getVisualPosition()); + } private void init(String text) throws IOException { configureFromFileText(getTestName(false) + ".txt", text);