diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java index 48d99affd51d..f10599533ac4 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java @@ -1848,16 +1848,16 @@ public final class EditorImpl extends UserDataHolderBase implements EditorEx, Hi private void bulkUpdateFinished() { myFoldingModel.onBulkDocumentUpdateFinished(); mySoftWrapModel.onBulkDocumentUpdateFinished(); + if (myUseNewRendering) { + myView.reset(); + } myCaretModel.onBulkDocumentUpdateFinished(); clearTextWidthCache(); setMouseSelectionState(MOUSE_SELECTION_STATE_NONE); - if (myUseNewRendering) { - myView.reset(); - } - else { + if (!myUseNewRendering) { mySizeContainer.reset(); } validateSize(); 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 dfa1302adc94..f9edfdb55c20 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 @@ -214,4 +214,13 @@ public class EditorImplTest extends AbstractEditorTest { myEditor.getSettings().setUseSoftWraps(false); assertEquals(new Dimension(70, 10), myEditor.getContentComponent().getPreferredSize()); } + + public void testUpdatingCaretPositionAfterBulkMode() throws Exception { + initText("abc"); + DocumentEx document = (DocumentEx)myEditor.getDocument(); + document.setInBulkUpdate(true); + document.insertString(0, "\n "); // we're changing number of visual lines, and invalidating text layout for caret line + document.setInBulkUpdate(false); + checkResultByText("\n abc"); + } }