If lines are removed after a renderer change, update padding appropriately

This commit is contained in:
Nathan Sobo
2012-06-05 10:47:45 -06:00
parent 9cfbce826d
commit c24b8a90b2
2 changed files with 13 additions and 10 deletions

View File

@@ -8,7 +8,7 @@ $ = require 'jquery'
_ = require 'underscore'
fs = require 'fs'
fdescribe "Editor", ->
describe "Editor", ->
[rootView, buffer, editor, cachedLineHeight] = []
getLineHeight = ->
@@ -500,8 +500,10 @@ fdescribe "Editor", ->
describe "when creating and destroying folds that are longer than the visible lines", ->
describe "when the cursor precedes the fold when it is destroyed", ->
it "renders lines and line numbers correctly", ->
scrollHeightBeforeFold = editor.scrollView.prop('scrollHeight')
fold = editor.createFold(1, 9)
fold.destroy()
expect(editor.scrollView.prop('scrollHeight')).toBe scrollHeightBeforeFold
expect(editor.renderedLines.find('.line').length).toBe 8
expect(editor.renderedLines.find('.line:last').text()).toBe buffer.lineForRow(7)
@@ -510,7 +512,6 @@ fdescribe "Editor", ->
expect(editor.gutter.find('.line-number:last').text()).toBe '8'
editor.scrollTop(4 * editor.lineHeight)
expect(editor.renderedLines.find('.line').length).toBe 10
expect(editor.renderedLines.find('.line:last').text()).toBe buffer.lineForRow(11)
@@ -702,7 +703,6 @@ fdescribe "Editor", ->
describe "when autoscrolling at the end of the document", ->
it "renders lines properly", ->
console.log editor.lineOverdraw
editor.setBuffer(new Buffer(require.resolve 'fixtures/two-hundred.txt'))
editor.attachToDom(heightInLines: 5.5)
expect(editor.renderedLines.find('.line').length).toBe 8

View File

@@ -329,13 +329,16 @@ class Editor extends View
if renderedLines
@gutter.renderLineNumbers(renderFrom, renderTo)
paddingTop = @firstRenderedScreenRow * @lineHeight
@renderedLines.css('padding-top', paddingTop)
@gutter.lineNumbers.css('padding-top', paddingTop)
@updatePaddingOfRenderedLines()
paddingBottom = (@getLastScreenRow() - @lastRenderedScreenRow) * @lineHeight
@renderedLines.css('padding-bottom', paddingBottom)
@gutter.lineNumbers.css('padding-bottom', paddingBottom)
updatePaddingOfRenderedLines: ->
paddingTop = @firstRenderedScreenRow * @lineHeight
@renderedLines.css('padding-top', paddingTop)
@gutter.lineNumbers.css('padding-top', paddingTop)
paddingBottom = (@getLastScreenRow() - @lastRenderedScreenRow) * @lineHeight
@renderedLines.css('padding-bottom', paddingBottom)
@gutter.lineNumbers.css('padding-bottom', paddingBottom)
getFirstVisibleScreenRow: ->
Math.floor(@scrollTop() / @lineHeight)
@@ -479,10 +482,10 @@ class Editor extends View
@lastRenderedScreenRow += rowDelta
@updateVisibleLines() if rowDelta < 0
if @lastRenderedScreenRow > maxEndRow
@removeLineElements(maxEndRow + 1, @lastRenderedScreenRow)
@lastRenderedScreenRow = maxEndRow
@updatePaddingOfRenderedLines()
@compositeCursor.updateBufferPosition() unless e.bufferChanged