From 63226c7ecbce3f7c8eb75f0e270b3374f39bddfa Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Thu, 12 Nov 2015 18:50:45 +0300 Subject: [PATCH] correct order of operations on bulk update finishing --- .../src/com/intellij/openapi/editor/impl/EditorImpl.java | 8 ++++---- .../com/intellij/openapi/editor/impl/EditorImplTest.java | 9 +++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) 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"); + } }