void (@NotNull DocumentEvent event) { if (myBulkUpdateInProgress) { return; } myUpdateInProgress = false; if (!isSoftWrappingEnabled()) { if (shouldSoftWrapsBeForced(event)) { forceSoftWraps(); if (isSoftWrappingEnabled()) { myDirty = false; myApplianceManager.recalculateAll(); return; } } myDirty = true; return; } myApplianceManager.documentChanged(event, myAfterLineEndInlayUpdated); if (DocumentEventUtil.isMoveInsertion(event)) { int dstOffset = event.getOffset(); int srcOffset = event.getMoveOffset(); int textLength = event.getDocument().getTextLength(); // adding +1, as inlays at the end of the moved range stick to the following text (and impact its layout) myApplianceManager.recalculate(Arrays.asList(new TextRange(srcOffset, Math.min(textLength, srcOffset + event.getNewLength() + 1)), new TextRange(dstOffset, Math.min(textLength, dstOffset + event.getNewLength() + 1)))); } }