diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index 57e35fd0e..96feec59d 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -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" diff --git a/src/app/editor.coffee b/src/app/editor.coffee index 38de0eb4a..88f406771 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -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)