IDEA-129333 Code folding and "Navigate" actions don't mix well

This commit is contained in:
Dmitry Batrak
2014-11-18 15:54:58 +03:00
parent 7cfaf33bb9
commit 611af8fc41
2 changed files with 14 additions and 3 deletions
@@ -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);
@@ -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);