correct order of operations on bulk update finishing

This commit is contained in:
Dmitry Batrak
2015-11-12 18:51:29 +03:00
parent 151339e77a
commit 63226c7ecb
2 changed files with 13 additions and 4 deletions
@@ -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();
@@ -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("a<caret>bc");
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 a<caret>bc");
}
}