From 42d509ca4e5dedf3392bbd38ac33b9937bd548a5 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Mon, 14 Dec 2015 17:38:36 -0800 Subject: [PATCH] Merge pull request #10062 from atom/mb-emit-state-update-on-model-scroll Emit state update when model's scroll position is changed --- spec/text-editor-presenter-spec.coffee | 5 +++++ src/text-editor-presenter.coffee | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/spec/text-editor-presenter-spec.coffee b/spec/text-editor-presenter-spec.coffee index 2aeb8822e..0ebb1c29f 100644 --- a/spec/text-editor-presenter-spec.coffee +++ b/spec/text-editor-presenter-spec.coffee @@ -803,6 +803,11 @@ describe "TextEditorPresenter", -> presenter.getState() # commits scroll position expect(editor.getFirstVisibleScreenRow()).toBe 6 + it "updates when the model's scroll position is changed directly", -> + presenter = buildPresenter(scrollTop: 0, explicitHeight: 20, horizontalScrollbarHeight: 10, lineHeight: 10) + expectStateUpdate presenter, -> editor.setFirstVisibleScreenRow(1) + expect(getState(presenter).content.scrollTop).toBe 10 + it "reassigns the scrollTop if it exceeds the max possible value after lines are removed", -> presenter = buildPresenter(scrollTop: 80, lineHeight: 10, explicitHeight: 50, horizontalScrollbarHeight: 0) expect(presenter.getState().content.scrollTop).toBe(80) diff --git a/src/text-editor-presenter.coffee b/src/text-editor-presenter.coffee index 405e34548..d8c001ca0 100644 --- a/src/text-editor-presenter.coffee +++ b/src/text-editor-presenter.coffee @@ -1442,7 +1442,7 @@ class TextEditorPresenter @emitDidUpdateState() didChangeFirstVisibleScreenRow: (screenRow) -> - @updateScrollTop(screenRow * @lineHeight) + @setScrollTop(screenRow * @lineHeight) getVerticalScrollMarginInPixels: -> Math.round(@model.getVerticalScrollMargin() * @lineHeight)