From c3a157a544c039a6646f49f27d78d77b3528fbc3 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 4 Jun 2012 20:29:40 -0600 Subject: [PATCH] Revert "Use renderTo and renderFrom (instead of firstVisible/lastVisible) to adjust visible lines." This reverts commit 419d7b1dec0f7f5359c2fe377bf1ffb0079fe667. Conflicts: spec/app/editor-spec.coffee --- spec/app/editor-spec.coffee | 39 +++++++++++++------------------------ src/app/editor.coffee | 10 +++++----- 2 files changed, 19 insertions(+), 30 deletions(-) diff --git a/spec/app/editor-spec.coffee b/spec/app/editor-spec.coffee index c17218e90..9668120cc 100644 --- a/spec/app/editor-spec.coffee +++ b/spec/app/editor-spec.coffee @@ -537,28 +537,28 @@ describe "Editor", -> expect(editor.renderedLines.find('.line').length).toBe 8 editor.scrollTop(editor.lineHeight * 1.5) - expect(editor.renderedLines.find('.line').length).toBe 9 + expect(editor.renderedLines.find('.line').length).toBe 8 expect(editor.renderedLines.find('.line:first').text()).toBe buffer.lineForRow(0) - expect(editor.renderedLines.find('.line:last').text()).toBe buffer.lineForRow(8) + expect(editor.renderedLines.find('.line:last').text()).toBe buffer.lineForRow(7) - editor.scrollTop(editor.lineHeight * 3.5) + editor.scrollTop(editor.lineHeight * 3.5) # first visible row will be 3, last will be 8 expect(editor.renderedLines.find('.line').length).toBe 10 expect(editor.renderedLines.find('.line:first').text()).toBe buffer.lineForRow(1) expect(editor.renderedLines.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 * 5.5) - expect(editor.renderedLines.find('.line').length).toBe 10 - expect(editor.renderedLines.find('.line:first').text()).toBe buffer.lineForRow(3) - expect(editor.renderedLines.find('.line:last').text()).toBe buffer.lineForRow(12) - expect(editor.gutter.find('.line-number:first').text()).toBe '4' - expect(editor.gutter.find('.line-number:last').text()).toBe '13' - # here we don't scroll far enough to trigger additional rendering - editor.scrollTop(editor.lineHeight * 7.5) + editor.scrollTop(editor.lineHeight * 5.5) # first visible row will be 5, last will be 10 expect(editor.renderedLines.find('.line').length).toBe 10 - expect(editor.renderedLines.find('.line:first').text()).toBe buffer.lineForRow(3) + expect(editor.renderedLines.find('.line:first').text()).toBe buffer.lineForRow(1) + expect(editor.renderedLines.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.renderedLines.find('.line').length).toBe 8 + expect(editor.renderedLines.find('.line:first').text()).toBe buffer.lineForRow(5) expect(editor.renderedLines.find('.line:last').text()).toBe buffer.lineForRow(12) editor.scrollTop(editor.lineHeight * 3.5) # first visible row will be 3, last will be 8 @@ -690,17 +690,6 @@ describe "Editor", -> expect(editor.renderedLines.find(".line:first").text()).toBe buffer.lineForRow(0) expect(editor.renderedLines.find(".line:last").text()).toBe buffer.lineForRow(6) - describe "when folding leaves less then a screen worth of text (regression)", -> - it "renders lines properly", -> - editor.lineOverdraw = 1 - editor.clearVisibleLines() - editor.attachToDom(heightInLines: 5) - editor.renderer.toggleFoldAtBufferRow(4) - editor.renderer.toggleFoldAtBufferRow(0) - - expect(editor.renderedLines.find('.line').length).toBe 1 - expect(editor.renderedLines.find('.line').text()).toBe buffer.lineForRow(0) - describe "gutter rendering", -> beforeEach -> editor.attachToDom(heightInLines: 5.5) @@ -712,9 +701,9 @@ describe "Editor", -> # here we don't scroll far enough to trigger additional rendering editor.scrollTop(editor.lineHeight * 1.5) - expect(editor.renderedLines.find('.line').length).toBe 9 + expect(editor.renderedLines.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.scrollTop(editor.lineHeight * 3.5) expect(editor.renderedLines.find('.line').length).toBe 10 diff --git a/src/app/editor.coffee b/src/app/editor.coffee index 1f2c53111..579559936 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -233,7 +233,7 @@ class Editor extends View afterAttach: (onDom) -> return if @attached or not onDom @attached = true - @clearVisibleLines() + @clearLines() @subscribeToFontSize() @calculateDimensions() @setMaxLineLength() if @softWrap @@ -291,10 +291,10 @@ class Editor extends View @scrollTop() + @scrollView.height() renderVisibleLines: -> - @clearVisibleLines() + @clearLines() @updateVisibleLines() - clearVisibleLines: -> + clearLines: -> @lineCache = [] @renderedLines.find('.line').remove() @@ -307,7 +307,7 @@ class Editor extends View renderFrom = Math.max(0, firstVisibleScreenRow - @lineOverdraw) renderTo = Math.min(@getLastScreenRow(), lastVisibleScreenRow + @lineOverdraw) - if renderFrom < @firstRenderedScreenRow + if firstVisibleScreenRow < @firstRenderedScreenRow @removeLineElements(Math.max(@firstRenderedScreenRow, renderTo + 1), @lastRenderedScreenRow) @lastRenderedScreenRow = renderTo newLines = @buildLineElements(renderFrom, Math.min(@firstRenderedScreenRow - 1, renderTo)) @@ -315,7 +315,7 @@ class Editor extends View @firstRenderedScreenRow = renderFrom renderedLines = true - if renderTo > @lastRenderedScreenRow + if lastVisibleScreenRow > @lastRenderedScreenRow if 0 <= @firstRenderedScreenRow < renderFrom @removeLineElements(@firstRenderedScreenRow, Math.min(@lastRenderedScreenRow, renderFrom - 1)) @firstRenderedScreenRow = renderFrom