mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Buffer change events update the @lastRenderedScreenRow
This commit is contained in:
@@ -486,6 +486,15 @@ describe "Editor", ->
|
||||
expect(editor.lines.find('.line:first').text()).toBe buffer.lineForRow(0)
|
||||
expect(editor.lines.find('.line:last').text()).toBe buffer.lineForRow(9)
|
||||
|
||||
it "renders correctly when scrolling after buffer change", ->
|
||||
editor.attachToDom(heightInLines: 5.5)
|
||||
editor.insertText("1\n")
|
||||
_.times 4, ->
|
||||
editor.moveCursorDown()
|
||||
editor.verticalScrollbar.trigger 'scroll'
|
||||
expect(editor.lines.find('.line:eq(0)').text()).toBe editor.buffer.lineForRow(2)
|
||||
expect(editor.lines.find('.line:eq(5)').text()).toBe editor.buffer.lineForRow(7)
|
||||
|
||||
describe "gutter rendering", ->
|
||||
beforeEach ->
|
||||
editor.attachToDom(heightInLines: 5.5)
|
||||
|
||||
@@ -404,16 +404,18 @@ class Editor extends View
|
||||
@compositeSelection.handleBufferChange(e)
|
||||
|
||||
handleRendererChange: (e) ->
|
||||
{ oldRange, newRange } = e
|
||||
unless newRange.isSingleLine() and newRange.coversSameRows(oldRange)
|
||||
oldScreenRange = e.oldRange
|
||||
newScreenRange = e.newRange
|
||||
unless newScreenRange.isSingleLine() and newScreenRange.coversSameRows(oldScreenRange)
|
||||
@gutter.renderLineNumbers(@getFirstVisibleScreenRow(), @getLastVisibleScreenRow())
|
||||
|
||||
@compositeCursor.updateBufferPosition() unless e.bufferChanged
|
||||
|
||||
if @attached
|
||||
lineElements = @buildLineElements(newRange.start.row, newRange.end.row)
|
||||
@replaceLineElements(oldRange.start.row, oldRange.end.row, lineElements)
|
||||
lineElements = @buildLineElements(newScreenRange.start.row, newScreenRange.end.row)
|
||||
@replaceLineElements(oldScreenRange.start.row, oldScreenRange.end.row, lineElements)
|
||||
@verticalScrollbarContent.height(@lineHeight * @screenLineCount())
|
||||
@lastRenderedScreenRow += newScreenRange.end.row - oldScreenRange.end.row
|
||||
|
||||
buildLineElements: (startRow, endRow) ->
|
||||
charWidth = @charWidth
|
||||
@@ -448,7 +450,6 @@ class Editor extends View
|
||||
startRow = startScreenRow - @firstRenderedScreenRow
|
||||
endRow = startRow + rowCount
|
||||
|
||||
|
||||
elementToInsertBefore = @lineCache[startRow]
|
||||
elementsToReplace = @lineCache[startRow...endRow]
|
||||
@lineCache[startRow...endRow] = lineElements?.toArray() or []
|
||||
|
||||
Reference in New Issue
Block a user