From ba9fa9a0beddd5c18d18c9d3df8115b4cb059fc8 Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Thu, 5 Jul 2018 17:24:45 +0100 Subject: [PATCH] Store first visible line instead of scrollTop scrollTop is affected by changing viewport size and switching between Ace and CM --- .../cursor-position/CursorPositionAdapter.coffee | 13 +++++-------- .../cursor-position/CursorPositionManager.coffee | 10 +++++----- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionAdapter.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionAdapter.coffee index 6c8c051f8a..d58f012b57 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionAdapter.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionAdapter.coffee @@ -7,19 +7,16 @@ define [ getCursor: () -> @editor.getCursorPosition() - getCursorForSession: (session) -> - session.selection.getCursor() - - getScrollTopForSession: (session) -> - session.getScrollTop() + getEditorScrollPosition: () -> + @editor.getFirstVisibleRow() setCursor: (pos) -> pos = pos.cursorPosition or { row: 0, column: 0 } @editor.moveCursorToPosition(pos) - setScrollTop: (pos) -> - pos = pos.scrollTop or 0 - @editor.getSession().setScrollTop(pos) + setEditorScrollPosition: (pos) -> + pos = pos.firstVisibleLine or 0 + @editor.scrollToLine(pos) clearSelection: () -> @editor.selection.clearSelection() diff --git a/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionManager.coffee b/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionManager.coffee index 2b6ab3eeaf..b7ba730507 100644 --- a/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionManager.coffee +++ b/services/web/public/coffee/ide/editor/directives/aceEditor/cursor-position/CursorPositionManager.coffee @@ -22,7 +22,7 @@ define [], () -> onSessionChange: (e) => if e.oldSession? @storeCursorPosition(e.oldSession) - @storeScrollTopPosition(e.oldSession) + @storeFirstVisibleLine() @doc_id = @$scope.sharejsDoc?.doc_id @@ -32,15 +32,15 @@ define [], () -> onUnload: (session) => @storeCursorPosition(session) - @storeScrollTopPosition(session) + @storeFirstVisibleLine() onCursorChange: () => @emitCursorUpdateEvent() - storeScrollTopPosition: (session) -> + storeFirstVisibleLine: () -> if @doc_id? docPosition = @localStorage("doc.position.#{@doc_id}") || {} - docPosition.scrollTop = @adapter.getScrollTopForSession(session) + docPosition.firstVisibleLine = @adapter.getEditorScrollPosition() @localStorage("doc.position.#{@doc_id}", docPosition) storeCursorPosition: (session) -> @@ -57,4 +57,4 @@ define [], () -> return if !@doc_id? pos = @localStorage("doc.position.#{@doc_id}") || {} @adapter.setCursor(pos) - @adapter.setScrollTop(pos) + @adapter.setEditorScrollPosition(pos)