From c24b8a90b2d8a087a77cedb8fecf05a7d6ce5bb3 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 5 Jun 2012 10:47:45 -0600 Subject: [PATCH] If lines are removed after a renderer change, update padding appropriately --- spec/app/editor-spec.coffee | 6 +++--- src/app/editor.coffee | 17 ++++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index 63495429a..730b7fc51 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -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 diff --git a/src/app/editor.coffee b/src/app/editor.coffee index fa66776ce..482c825a2 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -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