Don't try to measure lines that don't exist

By the time that the animation frame is delivered, the requested
autoscroll
position could not exist anymore. This could cause the editor component
to measure a non-existent line and, as a result, throw an exception.

With this commit we will always ignore measurements for screen lines
that do not exist.
This commit is contained in:
Antonio Scandurra
2017-06-07 18:59:23 +02:00
parent baca845e64
commit 9a0709e95e
2 changed files with 16 additions and 3 deletions

View File

@@ -332,7 +332,7 @@ class TextEditorComponent {
this.derivedDimensionsCache = {}
this.updateModelSoftWrapColumn()
if (this.pendingAutoscroll) {
const {screenRange, options} = this.pendingAutoscroll
let {screenRange, options} = this.pendingAutoscroll
this.autoscrollVertically(screenRange, options)
this.requestHorizontalMeasurement(screenRange.start.row, screenRange.start.column)
this.requestHorizontalMeasurement(screenRange.end.row, screenRange.end.column)
@@ -2097,7 +2097,12 @@ class TextEditorComponent {
if (column === 0) return
if (row < this.getRenderedStartRow() || row >= this.getRenderedEndRow()) {
this.requestExtraLineToMeasure(row, this.props.model.screenLineForScreenRow(row))
const screenLine = this.props.model.screenLineForScreenRow(row)
if (screenLine) {
this.requestExtraLineToMeasure(row, screenLine)
} else {
return
}
}
let columns = this.horizontalPositionsToMeasure.get(row)