Add extra padding to the bottom of an editor's vertical scrollbar

This gives us some space when we scroll to the bottom of a file.
Similar to how MacVim works when using the mouse.

Closes #464
This commit is contained in:
probablycorey
2013-04-30 11:52:02 -07:00
parent 471ac4976f
commit af5392b8ac
2 changed files with 10 additions and 3 deletions

View File

@@ -317,7 +317,7 @@ describe "Editor", ->
expect(editor.charWidth).toBeGreaterThan charWidthBefore
expect(editor.getCursorView().position()).toEqual { top: 5 * editor.lineHeight, left: 6 * editor.charWidth }
expect(editor.renderedLines.outerHeight()).toBe buffer.getLineCount() * editor.lineHeight
expect(editor.verticalScrollbarContent.height()).toBe buffer.getLineCount() * editor.lineHeight
expect(editor.verticalScrollbarContent.height()).toBe (buffer.getLineCount() + editor.bottomPaddingInLines) * editor.lineHeight
newEditor = new Editor(editor.activeEditSession.copy())
editor.remove()
@@ -1297,6 +1297,7 @@ describe "Editor", ->
describe "when lines are removed", ->
beforeEach ->
editor.bottomPaddingInLines = 0
editor.attachToDom(heightInLines: 5)
it "sets the rendered screen line's width to either the max line length or the scollView's width (whichever is greater)", ->
@@ -1391,6 +1392,7 @@ describe "Editor", ->
describe "when autoscrolling at the end of the document", ->
it "renders lines properly", ->
editor.edit(project.buildEditSession('two-hundred.txt'))
editor.bottomPaddingInLines = 0
editor.attachToDom(heightInLines: 5.5)
expect(editor.renderedLines.find('.line').length).toBe 8

View File

@@ -64,6 +64,7 @@ class Editor extends View
newCursors: null
newSelections: null
redrawOnReattach: false
bottomPaddingInLines: 10
# Public: The constructor for setting up an `Editor` instance.
#
@@ -1280,7 +1281,10 @@ class Editor extends View
@overlayer.height(height)
@layerHeight = height
@verticalScrollbarContent.height(height)
bottomPaddingInLines = if @mini then 0 else @bottomPaddingInLines
heightWithPadding = height + (@lineHeight * bottomPaddingInLines)
@verticalScrollbarContent.height(heightWithPadding)
@scrollBottom(height) if @scrollBottom() > height
minWidth = @charWidth * @maxScreenLineLength() + 20
@@ -1516,7 +1520,8 @@ class Editor extends View
#
# Returns a {Number}.
getLastVisibleScreenRow: ->
Math.max(0, Math.ceil((@scrollTop() + @scrollView.height()) / @lineHeight) - 1)
calculatedRow = Math.ceil((@scrollTop() + @scrollView.height()) / @lineHeight) - 1
Math.max(0, Math.min(@getScreenLineCount() - 1, calculatedRow))
# Public: Given a row number, identifies if it is currently visible.
#