ensureVisible method

ViewportModel ensureVisible(
  1. int line,
  2. int colstart,
  3. int colend
)

Ensures that the given line and column are in the viewport.

Implementation

ViewportModel ensureVisible(int line, int colstart, int colend) {
  final maxWidth = _maxWidth();
  var newModel = this;
  if (softWrap) {
    // In soft-wrap mode, horizontal scrolling isn't meaningful: instead we map
    // the target to a virtual y-offset (wrapped subline).
    newModel = newModel.setXOffset(0);
  } else if (colend <= maxWidth) {
    newModel = newModel.setXOffset(0);
  } else {
    newModel = newModel.setXOffset(colstart - horizontalStep);
  }

  final targetYOffset = softWrap
      ? _virtualYOffsetFor(line, colstart, maxWidth)
      : line;
  if (targetYOffset < yOffset || targetYOffset >= yOffset + _maxHeight()) {
    newModel = newModel.setYOffset(targetYOffset);
  }
  return newModel;
}