mirror of
https://github.com/atom/atom.git
synced 2026-01-15 01:48:15 -05:00
Fix bug w/ markers mutated inside of change listeners
This commit is contained in:
@@ -1085,6 +1085,21 @@ describe "DisplayBuffer", ->
|
||||
expect(changeHandler).toHaveBeenCalled()
|
||||
expect(markerChangedHandler).toHaveBeenCalled()
|
||||
|
||||
it "emits the correct events when markers are mutated inside event listeners", ->
|
||||
marker.onDidChange ->
|
||||
if marker.getHeadScreenPosition().isEqual([5, 9])
|
||||
marker.setHeadScreenPosition([5, 8])
|
||||
|
||||
marker.setHeadScreenPosition([5, 9])
|
||||
|
||||
headChanges = for [event] in markerChangedHandler.argsForCall
|
||||
{old: event.oldHeadScreenPosition, new: event.newHeadScreenPosition}
|
||||
|
||||
expect(headChanges).toEqual [
|
||||
{old: [5, 10], new: [5, 9]}
|
||||
{old: [5, 9], new: [5, 8]}
|
||||
]
|
||||
|
||||
describe "::findMarkers(attributes)", ->
|
||||
it "allows the startBufferRow and endBufferRow to be specified", ->
|
||||
marker1 = displayBuffer.markBufferRange([[0, 0], [3, 0]], class: 'a')
|
||||
|
||||
@@ -346,15 +346,15 @@ class Marker
|
||||
isValid
|
||||
}
|
||||
|
||||
@emit 'changed', changeEvent if Grim.includeDeprecatedAPIs
|
||||
@emitter.emit 'did-change', changeEvent
|
||||
|
||||
@oldHeadBufferPosition = newHeadBufferPosition
|
||||
@oldHeadScreenPosition = newHeadScreenPosition
|
||||
@oldTailBufferPosition = newTailBufferPosition
|
||||
@oldTailScreenPosition = newTailScreenPosition
|
||||
@wasValid = isValid
|
||||
|
||||
@emit 'changed', changeEvent if Grim.includeDeprecatedAPIs
|
||||
@emitter.emit 'did-change', changeEvent
|
||||
|
||||
getPixelRange: ->
|
||||
@displayBuffer.pixelRangeForScreenRange(@getScreenRange(), false)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user