From fe857b7a08de8b50d24f6fe42defcbc0c62a6747 Mon Sep 17 00:00:00 2001 From: Lee Dohm Date: Fri, 11 Mar 2016 21:26:27 -0800 Subject: [PATCH] Add Selection.onDidChangeRange event object to emitter --- spec/selection-spec.coffee | 11 +++++++++++ src/selection.coffee | 7 ++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/spec/selection-spec.coffee b/spec/selection-spec.coffee index 319e2d438..9a2d99d8d 100644 --- a/spec/selection-spec.coffee +++ b/spec/selection-spec.coffee @@ -69,6 +69,16 @@ describe "Selection", -> selection.selectLine() expect(selection.getBufferRange()).toEqual [[2, 0], [4, 0]] + describe "when the selection's range is moved", -> + it "notifies ::onDidChangeRange observers", -> + selection.setBufferRange([[2, 0], [2, 10]]) + changeScreenRangeHandler = jasmine.createSpy('changeScreenRangeHandler') + selection.onDidChangeRange changeScreenRangeHandler + + buffer.insert([2, 5], 'abc') + expect(changeScreenRangeHandler).toHaveBeenCalled() + expect(changeScreenRangeHandler.mostRecentCall.args[0]).not.toBeUndefined() + describe "when only the selection's tail is moved (regression)", -> it "notifies ::onDidChangeRange observers", -> selection.setBufferRange([[2, 0], [2, 10]], reversed: true) @@ -77,6 +87,7 @@ describe "Selection", -> buffer.insert([2, 5], 'abc') expect(changeScreenRangeHandler).toHaveBeenCalled() + expect(changeScreenRangeHandler.mostRecentCall.args[0]).not.toBeUndefined() describe "when the selection is destroyed", -> it "destroys its marker", -> diff --git a/src/selection.coffee b/src/selection.coffee index e208ea55a..6108c6ac8 100644 --- a/src/selection.coffee +++ b/src/selection.coffee @@ -781,14 +781,15 @@ class Selection extends Model @cursor.emitter.emit('did-change-position', cursorMovedEvent) @editor.cursorMoved(cursorMovedEvent) - @emitter.emit 'did-change-range' - @editor.selectionRangeChanged( + rangeChangedEvent = oldBufferRange: new Range(oldHeadBufferPosition, oldTailBufferPosition) oldScreenRange: new Range(oldHeadScreenPosition, oldTailScreenPosition) newBufferRange: @getBufferRange() newScreenRange: @getScreenRange() selection: this - ) + + @emitter.emit('did-change-range', rangeChangedEvent) + @editor.selectionRangeChanged(rangeChangedEvent) markerDidDestroy: -> return if @editor.isDestroyed()