Make sure scroll positions are integers

This commit is contained in:
Antonio Scandurra
2015-09-23 08:21:24 +02:00
parent 37fb253bfd
commit d3b1d309ba
2 changed files with 18 additions and 2 deletions

View File

@@ -333,6 +333,14 @@ describe "TextEditorPresenter", ->
expectStateUpdate presenter, -> presenter.setScrollLeft(50)
expect(presenter.getState().horizontalScrollbar.scrollLeft).toBe 50
it "is always rounded to the nearest integer", ->
presenter = buildPresenter(scrollLeft: 10, verticalScrollbarWidth: 10, contentFrameWidth: 500)
expect(presenter.getState().content.scrollLeft).toBe 10
expectStateUpdate presenter, -> presenter.setScrollLeft(11.4)
expect(presenter.getState().content.scrollLeft).toBe 11
expectStateUpdate presenter, -> presenter.setScrollLeft(12.6)
expect(presenter.getState().content.scrollLeft).toBe 13
it "never exceeds the computed scrollWidth minus the computed clientWidth", ->
presenter = buildPresenter(scrollLeft: 10, verticalScrollbarWidth: 10, explicitHeight: 100, contentFrameWidth: 500)
expectStateUpdate presenter, -> presenter.setScrollLeft(300)
@@ -674,6 +682,14 @@ describe "TextEditorPresenter", ->
expectStateUpdate presenter, -> presenter.setScrollTop(50)
expect(presenter.getState().content.scrollTop).toBe 50
it "is always rounded to the nearest integer", ->
presenter = buildPresenter(scrollTop: 10, lineHeight: 10, explicitHeight: 20)
expect(presenter.getState().content.scrollTop).toBe 10
expectStateUpdate presenter, -> presenter.setScrollTop(11.4)
expect(presenter.getState().content.scrollTop).toBe 11
expectStateUpdate presenter, -> presenter.setScrollTop(12.6)
expect(presenter.getState().content.scrollTop).toBe 13
it "scrolls down automatically when the model is changed", ->
presenter = buildPresenter(scrollTop: 0, lineHeight: 10, explicitHeight: 20)

View File

@@ -1526,13 +1526,13 @@ class TextEditorPresenter
@setScrollRight(desiredScrollRight)
commitPendingScrollLeftPosition: ->
scrollLeft = @constrainScrollLeft(@pendingScrollLeft)
scrollLeft = Math.round(@constrainScrollLeft(@pendingScrollLeft))
if scrollLeft isnt @scrollLeft and not Number.isNaN(scrollLeft)
@scrollLeft = scrollLeft
@model.setScrollLeft(scrollLeft)
commitPendingScrollTopPosition: ->
scrollTop = @constrainScrollTop(@pendingScrollTop)
scrollTop = Math.round(@constrainScrollTop(@pendingScrollTop))
if scrollTop isnt @scrollTop and not Number.isNaN(scrollTop)
@scrollTop = scrollTop
@model.setScrollTop(scrollTop)