mirror of
https://github.com/atom/atom.git
synced 2026-01-24 14:28:14 -05:00
Report proper screen ranges on change events for folds created on wrapped lines
This commit is contained in:
@@ -42,6 +42,26 @@ describe "Renderer", ->
|
||||
expect(renderer.lineForRow(3).text).toBe ' var pivot = items.shift(), current, left = [], '
|
||||
expect(renderer.lineForRow(4).text).toBe 'right = [];'
|
||||
|
||||
describe "when a fold is created on the second screen line of a wrapped buffer line", ->
|
||||
it "inserts the placeholder in the correct location and fires a change event", ->
|
||||
fold = renderer.createFold([[3, 52], [3, 56]])
|
||||
expect(renderer.lineForRow(3).text).toBe ' var pivot = items.shift(), current, left = [], '
|
||||
expect(renderer.lineForRow(4).text).toBe 'r... = [];'
|
||||
expect(renderer.lineForRow(5).text).toBe ' while(items.length > 0) {'
|
||||
|
||||
expect(changeHandler).toHaveBeenCalled()
|
||||
[[event]]= changeHandler.argsForCall
|
||||
expect(event.oldRange).toEqual([[3, 0], [4, 11]])
|
||||
expect(event.newRange).toEqual([[3, 0], [4, 10]])
|
||||
|
||||
changeHandler.reset()
|
||||
fold.destroy()
|
||||
|
||||
expect(changeHandler).toHaveBeenCalled()
|
||||
[[event]]= changeHandler.argsForCall
|
||||
expect(event.oldRange).toEqual([[3, 0], [4, 10]])
|
||||
expect(event.newRange).toEqual([[3, 0], [4, 11]])
|
||||
|
||||
describe "when there is a fold placeholder straddling the max length boundary", ->
|
||||
it "wraps the line before the fold placeholder", ->
|
||||
renderer.createFold([[3, 49], [6, 1]])
|
||||
|
||||
@@ -63,8 +63,7 @@ class Renderer
|
||||
oldScreenRange.start.row,
|
||||
oldScreenRange.end.row,
|
||||
lines)
|
||||
newScreenRange = @expandScreenRangeToLineEnds(
|
||||
new Range(oldScreenRange.start.copy(), oldScreenRange.start.copy()))
|
||||
newScreenRange = @screenLineRangeForBufferRange(bufferRange)
|
||||
|
||||
@trigger 'change', oldRange: oldScreenRange, newRange: newScreenRange
|
||||
@trigger 'fold', bufferRange
|
||||
@@ -75,7 +74,7 @@ class Renderer
|
||||
@unregisterFold(bufferRange.start.row, fold)
|
||||
startScreenRow = @screenRowForBufferRow(bufferRange.start.row)
|
||||
|
||||
oldScreenRange = @expandScreenRangeToLineEnds(new Range([startScreenRow, 0], [startScreenRow, 0]))
|
||||
oldScreenRange = @screenLineRangeForBufferRange(bufferRange)
|
||||
@lineMap.replaceScreenRow(startScreenRow,
|
||||
@buildLinesForBufferRows(bufferRange.start.row, bufferRange.end.row))
|
||||
newScreenRange = @screenLineRangeForBufferRange(bufferRange)
|
||||
|
||||
Reference in New Issue
Block a user