mirror of
https://github.com/atom/atom.git
synced 2026-01-25 23:08:18 -05:00
Only re-render the gutter when we render new lines
This commit is contained in:
@@ -488,6 +488,16 @@ describe "Editor", ->
|
||||
expect(editor.visibleLines.find('.line').length).toBe 10
|
||||
expect(editor.visibleLines.find('.line:first').text()).toBe buffer.lineForRow(1)
|
||||
expect(editor.visibleLines.find('.line:last').html()).toBe ' ' # line 10 is blank
|
||||
expect(editor.gutter.find('.line-number:first').text()).toBe '2'
|
||||
expect(editor.gutter.find('.line-number:last').text()).toBe '11'
|
||||
|
||||
# here we don't scroll far enough to trigger additional rendering
|
||||
editor.scrollTop(editor.lineHeight * 5.5) # first visible row will be 5, last will be 10
|
||||
expect(editor.visibleLines.find('.line').length).toBe 10
|
||||
expect(editor.visibleLines.find('.line:first').text()).toBe buffer.lineForRow(1)
|
||||
expect(editor.visibleLines.find('.line:last').html()).toBe ' ' # line 10 is blank
|
||||
expect(editor.gutter.find('.line-number:first').text()).toBe '2'
|
||||
expect(editor.gutter.find('.line-number:last').text()).toBe '11'
|
||||
|
||||
editor.scrollTop(editor.lineHeight * 7.5) # first visible row is 7, last will be 12
|
||||
expect(editor.visibleLines.find('.line').length).toBe 8
|
||||
@@ -651,18 +661,17 @@ describe "Editor", ->
|
||||
editor.attachToDom(heightInLines: 5.5)
|
||||
|
||||
it "creates a line number element for each visible line, plus overdraw", ->
|
||||
expect(editor.gutter.find('.line-number').length).toEqual(8)
|
||||
expect(editor.gutter.find('.line-number').length).toBe 8
|
||||
expect(editor.gutter.find('.line-number:first').text()).toBe "1"
|
||||
expect(editor.gutter.find('.line-number:last').text()).toBe "8"
|
||||
|
||||
editor.verticalScrollbar.scrollTop(editor.lineHeight * 1.5)
|
||||
editor.verticalScrollbar.trigger 'scroll'
|
||||
# here we don't scroll far enough to trigger additional rendering
|
||||
editor.scrollTop(editor.lineHeight * 1.5)
|
||||
expect(editor.visibleLines.find('.line').length).toBe 8
|
||||
expect(editor.gutter.find('.line-number:first').text()).toBe "1"
|
||||
expect(editor.gutter.find('.line-number:last').text()).toBe "9"
|
||||
expect(editor.gutter.find('.line-number:last').text()).toBe "8"
|
||||
|
||||
editor.verticalScrollbar.scrollTop(editor.lineHeight * 3.5)
|
||||
editor.verticalScrollbar.trigger 'scroll'
|
||||
editor.scrollTop(editor.lineHeight * 3.5)
|
||||
expect(editor.visibleLines.find('.line').length).toBe 10
|
||||
expect(editor.gutter.find('.line-number:first').text()).toBe "2"
|
||||
expect(editor.gutter.find('.line-number:last').text()).toBe "11"
|
||||
|
||||
@@ -306,15 +306,13 @@ class Editor extends View
|
||||
renderFrom = Math.max(0, firstVisibleScreenRow - @lineOverdraw)
|
||||
renderTo = Math.min(@getLastScreenRow(), lastVisibleScreenRow + @lineOverdraw)
|
||||
|
||||
@gutter.renderLineNumbers(renderFrom, renderTo)
|
||||
|
||||
if firstVisibleScreenRow < @firstRenderedScreenRow
|
||||
@removeLineElements(Math.max(@firstRenderedScreenRow, renderTo + 1), @lastRenderedScreenRow)
|
||||
@lastRenderedScreenRow = renderTo
|
||||
newLines = @buildLineElements(renderFrom, Math.min(@firstRenderedScreenRow - 1, renderTo))
|
||||
@insertLineElements(renderFrom, newLines)
|
||||
@firstRenderedScreenRow = renderFrom
|
||||
adjustPadding = true
|
||||
renderedLines = true
|
||||
|
||||
if lastVisibleScreenRow > @lastRenderedScreenRow
|
||||
if 0 <= @firstRenderedScreenRow < renderFrom
|
||||
@@ -324,9 +322,10 @@ class Editor extends View
|
||||
newLines = @buildLineElements(startRowOfNewLines, renderTo)
|
||||
@insertLineElements(startRowOfNewLines, newLines)
|
||||
@lastRenderedScreenRow = renderTo
|
||||
adjustPadding = true
|
||||
renderedLines = true
|
||||
|
||||
if adjustPadding
|
||||
if renderedLines
|
||||
@gutter.renderLineNumbers(renderFrom, renderTo)
|
||||
paddingTop = @firstRenderedScreenRow * @lineHeight
|
||||
@visibleLines.css('padding-top', paddingTop)
|
||||
@gutter.lineNumbers.css('padding-top', paddingTop)
|
||||
|
||||
Reference in New Issue
Block a user