From 7e6e61905b8786966366274b30fa840bf3b44e7c Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Wed, 11 Jun 2014 17:19:59 -0700 Subject: [PATCH] Move the cursor on pageUp / pageDown Previously it was only moving the scrollTop, but not the cursors. Affected on the react editor. Refs #2423 --- spec/editor-spec.coffee | 7 ++++++- src/editor.coffee | 12 ++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/spec/editor-spec.coffee b/spec/editor-spec.coffee index 485ebe0ef..3362223c4 100644 --- a/spec/editor-spec.coffee +++ b/spec/editor-spec.coffee @@ -3211,24 +3211,29 @@ describe "Editor", -> expect(editor.getScrollRight()).toBe (9 + editor.getHorizontalScrollMargin()) * 10 describe ".pageUp/Down()", -> - it "scrolls one screen height up or down", -> + it "scrolls one screen height up or down and moves the cursor one page length", -> editor.manageScrollPosition = true editor.setLineHeightInPixels(10) editor.setHeight(50) expect(editor.getScrollHeight()).toBe 130 + expect(editor.getCursorBufferPosition().row).toBe 0 editor.pageDown() expect(editor.getScrollTop()).toBe 50 + expect(editor.getCursorBufferPosition().row).toBe 5 editor.pageDown() expect(editor.getScrollTop()).toBe 80 + expect(editor.getCursorBufferPosition().row).toBe 10 editor.pageUp() expect(editor.getScrollTop()).toBe 30 + expect(editor.getCursorBufferPosition().row).toBe 5 editor.pageUp() expect(editor.getScrollTop()).toBe 0 + expect(editor.getCursorBufferPosition().row).toBe 0 describe "decorations", -> decoration = null diff --git a/src/editor.coffee b/src/editor.coffee index d500365fa..ec162e222 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -1605,10 +1605,18 @@ class Editor extends Model @getCursor().autoscroll() pageUp: -> - @setScrollTop(@getScrollTop() - @getHeight()) + newScrollTop = @getScrollTop() - @getHeight() + @moveCursorUp(@getRowsPerPage()) + @setScrollTop(newScrollTop) pageDown: -> - @setScrollTop(@getScrollTop() + @getHeight()) + newScrollTop = @getScrollTop() + @getHeight() + @moveCursorDown(@getRowsPerPage()) + @setScrollTop(newScrollTop) + + # Returns the number of rows per page + getRowsPerPage: -> + Math.max(1, Math.ceil(@getHeight() / @getLineHeightInPixels())) moveCursors: (fn) -> @movingCursors = true