Update scrollWidth when the max line length / default char width changes

This commit is contained in:
Ben Ogle & Nathan Sobo
2014-06-25 11:16:46 -07:00
committed by Ben Ogle
parent 809804d0cc
commit 77389b0518
4 changed files with 26 additions and 11 deletions

View File

@@ -1038,7 +1038,6 @@ describe "DisplayBuffer", ->
displayBuffer.manageScrollPosition = true
displayBuffer.setLineHeightInPixels(10)
displayBuffer.setDefaultCharWidth(10)
displayBuffer.updateAllScreenLines()
it "disallows negative values", ->
displayBuffer.setWidth(displayBuffer.getScrollWidth() + 100)
@@ -1063,7 +1062,6 @@ describe "DisplayBuffer", ->
displayBuffer.setHorizontalScrollbarHeight(0)
displayBuffer.setHeight(50)
displayBuffer.setWidth(50)
displayBuffer.updateAllScreenLines()
it "sets the scroll top and scroll left so the given screen position is in view", ->
displayBuffer.scrollToScreenPosition([8, 20])
@@ -1079,3 +1077,21 @@ describe "DisplayBuffer", ->
it "does not scroll vertically if the position is already in view", ->
displayBuffer.scrollToScreenPosition([4, 20], center: true)
expect(displayBuffer.getScrollTop()).toBe 0
describe "scroll width", ->
cursorWidth = 1
beforeEach ->
displayBuffer.setDefaultCharWidth(10)
it "recomputes the scroll width when the default character width changes", ->
expect(displayBuffer.getScrollWidth()).toBe 10 * 65 + cursorWidth
displayBuffer.setDefaultCharWidth(12)
expect(displayBuffer.getScrollWidth()).toBe 12 * 65 + cursorWidth
it "recomputes the scroll width when the max line length changes", ->
buffer.insert([6, 12], ' ')
expect(displayBuffer.getScrollWidth()).toBe 10 * 66 + cursorWidth
buffer.delete([[6, 10], [6, 12]], ' ')
expect(displayBuffer.getScrollWidth()).toBe 10 * 64 + cursorWidth

View File

@@ -62,7 +62,6 @@ describe "EditorComponent", ->
node.style.height = editor.getLineCount() * lineHeightInPixels + 'px'
node.style.width = '1000px'
editor.displayBuffer.updateAllScreenLines()
component.measureScrollView()
nextTick()

View File

@@ -733,7 +733,6 @@ describe "Editor", ->
editor.setHorizontalScrollbarHeight(0)
editor.setHeight(5.5 * 10)
editor.setWidth(5.5 * 10)
editor.displayBuffer.updateAllScreenLines()
it "scrolls down when the last cursor gets closer than ::verticalScrollMargin to the bottom of the editor", ->
expect(editor.getScrollTop()).toBe 0
@@ -1197,7 +1196,6 @@ describe "Editor", ->
editor.setHeight(50)
editor.setWidth(50)
editor.setHorizontalScrollbarHeight(0)
editor.displayBuffer.updateAllScreenLines()
expect(editor.getScrollTop()).toBe 0
@@ -1233,7 +1231,6 @@ describe "Editor", ->
editor.setDefaultCharWidth(10)
editor.setHeight(50)
editor.setWidth(50)
editor.displayBuffer.updateAllScreenLines()
editor.addSelectionForBufferRange([[8, 10], [8, 15]])
expect(editor.getScrollTop()).toBe 75

View File

@@ -208,7 +208,11 @@ class DisplayBuffer extends Model
setLineHeightInPixels: (@lineHeightInPixels) -> @lineHeightInPixels
getDefaultCharWidth: -> @defaultCharWidth
setDefaultCharWidth: (@defaultCharWidth) -> @defaultCharWidth
setDefaultCharWidth: (defaultCharWidth) ->
if defaultCharWidth isnt @defaultCharWidth
@defaultCharWidth = defaultCharWidth
@computeScrollWidth()
defaultCharWidth
getCursorWidth: -> 1
@@ -981,9 +985,6 @@ class DisplayBuffer extends Model
@rowMap.spliceRegions(startBufferRow, endBufferRow - startBufferRow, regions)
@findMaxLineLength(startScreenRow, endScreenRow, screenLines)
if startBufferRow <= @longestScreenRow < endScreenRow
@computeScrollWidth()
return if options.suppressChangeEvent
changeEvent =
@@ -1045,6 +1046,8 @@ class DisplayBuffer extends Model
{screenLines, regions}
findMaxLineLength: (startScreenRow, endScreenRow, newScreenLines) ->
oldMaxLineLength = @maxLineLength
if startScreenRow <= @longestScreenRow < endScreenRow
@longestScreenRow = 0
@maxLineLength = 0
@@ -1060,7 +1063,7 @@ class DisplayBuffer extends Model
@longestScreenRow = maxLengthCandidatesStartRow + screenRow
@maxLineLength = length
return
@computeScrollWidth() if oldMaxLineLength isnt @maxLineLength
computeScrollWidth: ->
@scrollWidth = @pixelPositionForScreenPosition([@longestScreenRow, @maxLineLength]).left + 1