Redraw lines and active line highlight when offscreen updates are made

When setUseWrapMode is true, if some text is inserted into a line which is
above the cursor and offscreen, then the renderer did not previously redraw the
lines or active line highlight. However, if this insert causes the line to wrap
onto another line then everything is shifted down by one visual line, leaving
the onscreen lines in an out of date state. With this commit, the onscreen
lines and active line highlight are now redrawn when this happens.
This commit is contained in:
James Allen 2014-07-10 12:56:11 +01:00
commit fd182ea76f
2 changed files with 8 additions and 2 deletions

View file

@ -708,6 +708,7 @@ var Editor = function(renderer, session) {
// update cursor because tab characters can influence the cursor position
this.$cursorChange();
this.$updateHighlightActiveLine();
};
this.onTokenizerUpdate = function(e) {

View file

@ -276,8 +276,13 @@ var VirtualRenderer = function(container, theme) {
this.$changedLines.lastRow = lastRow;
}
if (this.$changedLines.firstRow > this.layerConfig.lastRow ||
this.$changedLines.lastRow < this.layerConfig.firstRow)
// If the change happened offscreen above us then it's possible
// that a new line wrap will affect the position of the lines on our
// screen so they need redrawn.
if (this.$changedLines.lastRow < this.layerConfig.firstRow)
this.$changedLines.lastRow = this.layerConfig.lastRow
if (this.$changedLines.firstRow > this.layerConfig.lastRow)
return;
this.$loop.schedule(this.CHANGE_LINES);
};