public void testWrapAtFoldedLineBreak() throws IOException { initText("abc\ndef"); addCollapsedFoldRegion(3, 4, "..."); configureSoftWraps(6); verifySoftWrapPositions(4); VisualLinesIterator it = createIterator(0); assertFalse(it.atEnd()); it.advance(); assertFalse(it.atEnd()); it.advance(); assertTrue(it.atEnd()); }
public void testWrapAfterFolding() throws IOException { initText("abcdefghij"); addCollapsedFoldRegion(1, 8, "..."); configureSoftWraps(4); verifySoftWrapPositions(8); VisualLinesIterator it = createIterator(0); assertFalse(it.atEnd()); assertEquals(0, it.getVisualLineStartOffset()); assertEquals(0, it.getStartFoldingIndex()); it.advance(); assertFalse(it.atEnd()); assertEquals(8, it.getVisualLineStartOffset()); assertEquals(1, it.getStartFoldingIndex()); }
private int calculatePreferredWidth() { if (checkDirty()) return 1; assertValidState(); VisualLinesIterator iterator = new VisualLinesIterator(myView, 0); int maxWidth = 0; while (!iterator.atEnd()) { int visualLine = iterator.getVisualLine(); int width = myLineWidths.get(visualLine); if (width == UNKNOWN_WIDTH) { final Ref<Boolean> approximateValue = new Ref<Boolean>(Boolean.FALSE); width = getVisualLineWidth(iterator, () -> approximateValue.set(Boolean.TRUE)); if (approximateValue.get()) width = -width; myLineWidths.set(visualLine, width); } maxWidth = Math.max(maxWidth, Math.abs(width)); iterator.advance(); } return maxWidth; }