From d3b1d309ba0b6ddac47ff840090760fcd35c92e5 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 23 Sep 2015 08:21:24 +0200 Subject: [PATCH] Make sure scroll positions are integers --- spec/text-editor-presenter-spec.coffee | 16 ++++++++++++++++ src/text-editor-presenter.coffee | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/spec/text-editor-presenter-spec.coffee b/spec/text-editor-presenter-spec.coffee index ee7d16918..8db6fa90b 100644 --- a/spec/text-editor-presenter-spec.coffee +++ b/spec/text-editor-presenter-spec.coffee @@ -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) diff --git a/src/text-editor-presenter.coffee b/src/text-editor-presenter.coffee index c56731064..58caaa6e5 100644 --- a/src/text-editor-presenter.coffee +++ b/src/text-editor-presenter.coffee @@ -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)