From 5d99824debf204fcb422a831aef5fc7ebdca5d79 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Mon, 3 Dec 2012 10:23:28 -0800 Subject: [PATCH] autoscroll to results in command panel preview list --- src/app/editor.coffee | 3 +++ .../command-panel/spec/command-panel-spec.coffee | 10 ++++++++-- src/extensions/command-panel/src/preview-list.coffee | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/app/editor.coffee b/src/app/editor.coffee index 355805914..777819a78 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -935,6 +935,9 @@ class Editor extends View getLastVisibleScreenRow: -> Math.max(0, Math.ceil((@scrollTop() + @scrollView.height()) / @lineHeight) - 1) + isScreenRowVisible: (row) -> + @getFirstVisibleScreenRow() <= row <= @getLastVisibleScreenRow() + handleScreenLinesChange: (change) -> @pendingChanges.push(change) @requestDisplayUpdate() diff --git a/src/extensions/command-panel/spec/command-panel-spec.coffee b/src/extensions/command-panel/spec/command-panel-spec.coffee index 4b11ce8f1..78989d5a4 100644 --- a/src/extensions/command-panel/spec/command-panel-spec.coffee +++ b/src/extensions/command-panel/spec/command-panel-spec.coffee @@ -374,7 +374,7 @@ describe "CommandPanel", -> beforeEach -> previewList = commandPanel.previewList rootView.trigger 'command-panel:toggle' - waitsForPromise -> commandPanel.execute('X x/a+/') + waitsForPromise -> commandPanel.execute('X x/apply/') describe "when move-down and move-up are triggered on the preview list", -> it "selects the next/previous operation (if there is one), and scrolls the list if needed", -> @@ -408,7 +408,10 @@ describe "CommandPanel", -> _.times previewList.getOperations().length, -> previewList.trigger 'core:move-up' describe "when core:confirm is triggered on the preview list", -> - it "opens the operation's buffer, selects the search result, and focuses the active editor", -> + it "opens the operation's buffer, selects and scrolls to the search result, and focuses the active editor", -> + rootView.height(200) + rootView.attachToDom() + spyOn(rootView, 'focus') executeHandler = jasmine.createSpy('executeHandler') commandPanel.on 'core:confirm', executeHandler @@ -421,6 +424,9 @@ describe "CommandPanel", -> editSession = rootView.getActiveEditSession() expect(editSession.buffer.getPath()).toBe project.resolve(operation.getPath()) expect(editSession.getSelectedBufferRange()).toEqual operation.getBufferRange() + expect(editSession.getSelectedBufferRange()).toEqual operation.getBufferRange() + console.log editor.getCursorScreenRow(), editor.getFirstVisibleScreenRow(), editor.getLastVisibleScreenRow() + expect(editor.isScreenRowVisible(editor.getCursorScreenRow())).toBeTruthy() expect(rootView.focus).toHaveBeenCalled() expect(executeHandler).not.toHaveBeenCalled() diff --git a/src/extensions/command-panel/src/preview-list.coffee b/src/extensions/command-panel/src/preview-list.coffee index b2c111e08..44c1e1900 100644 --- a/src/extensions/command-panel/src/preview-list.coffee +++ b/src/extensions/command-panel/src/preview-list.coffee @@ -61,7 +61,7 @@ class PreviewList extends ScrollView operation = @getSelectedOperation() editSession = @rootView.open(operation.getPath()) bufferRange = operation.execute(editSession) - editSession.setSelectedBufferRange(bufferRange) if bufferRange + editSession.setSelectedBufferRange(bufferRange, autoscroll: true) if bufferRange @rootView.focus() false