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());
  }
Exemple #3
0
 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;
 }