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:
parent
4b286a5c0d
commit
fd182ea76f
2 changed files with 8 additions and 2 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue