Always re-render gutter from the first rendered to the last rendered screen row

This commit is contained in:
Nathan Sobo
2012-05-29 14:51:19 -06:00
parent 0700aba67f
commit 3e26386f98
2 changed files with 14 additions and 2 deletions

View File

@@ -676,6 +676,18 @@ describe "Editor", ->
editor.insertText(oneHundredLines)
expect(editor.gutter.lineNumbers.outerWidth()).toBe editor.charWidth * 3
describe "when lines are inserted", ->
it "re-renders the correct line number range in the gutter", ->
spyOn(editor, 'scrollTo')
editor.scrollTop(3 * editor.lineHeight)
expect(editor.gutter.find('.line-number:first').text()).toBe '2'
expect(editor.gutter.find('.line-number:last').text()).toBe '11'
buffer.insert([6, 0], '\n')
expect(editor.gutter.find('.line-number:first').text()).toBe '2'
expect(editor.gutter.find('.line-number:last').text()).toBe '11'
describe "when the insertion of lines causes the editor to scroll", ->
it "renders line numbers correctly", ->
oneHundredLines = [0..100].join("\n")
@@ -685,7 +697,7 @@ describe "Editor", ->
describe "when wrapping is on", ->
it "renders a • instead of line number for wrapped portions of lines", ->
editor.setMaxLineLength(50)
expect(editor.gutter.find('.line-number').length).toEqual(6)
expect(editor.gutter.find('.line-number').length).toEqual(8)
expect(editor.gutter.find('.line-number:eq(3)').text()).toBe '4'
expect(editor.gutter.find('.line-number:eq(4)').text()).toBe ''
expect(editor.gutter.find('.line-number:eq(5)').text()).toBe '5'

View File

@@ -453,7 +453,7 @@ class Editor extends View
firstVisibleScreenRow = @getFirstVisibleScreenRow()
lastVisibleScreenRow = @getLastVisibleScreenRow()
@gutter.renderLineNumbers(firstVisibleScreenRow, lastVisibleScreenRow) if e.lineNumbersChanged
@gutter.renderLineNumbers(@firstRenderedScreenRow, @lastRenderedScreenRow) if e.lineNumbersChanged
@verticalScrollbarContent.height(@lineHeight * @screenLineCount())
return if oldScreenRange.start.row > @lastRenderedScreenRow